找回密码
 加入
搜索
查看: 405|回复: 5

[AU3基础] 请问大家有什么办法在PE下离线获取Win11的版本信息?

[复制链接]
发表于 2025-9-25 19:35:16 | 显示全部楼层 |阅读模式
本帖最后由 令狐大虾 于 2025-12-11 23:27 编辑

例如挂载注册表配置文件,但是11的注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion下ProductName和win10的是一样的,如何才能做到像某些软件读取后直接显示出来“Windows 11 Enterprise”字样呢?
发表于 2025-9-26 08:29:07 | 显示全部楼层
方法一:查询离线系统注册表
这是最推荐的方法,因为系统的所有版本信息都权威地存储在注册表中。
​加载离线注册表配置单元​:
在 PE 中打开 ​注册表编辑器​ (regedit)。
选中 HKEY_LOCAL_MACHINE项。
点击顶部菜单的 ​文件 > 加载配置单元。
在弹出的文件浏览器中,导航到你的 ​离线系统盘​(例如 C:\`),然后进入Windows\system32\config` 文件夹。这个文件夹包含了系统的注册表文件。
选择名为 ​SOFTWARE​ 的文件(没有后缀名),然后点击“打开”。
系统会提示你输入一个“项名称”,你可以任意命名,例如 ​Offline_Sys。这相当于为离线系统的注册表创建一个挂载点。
​查询版本信息​:
现在,在 HKEY_LOCAL_MACHINE下会多出一个你刚命名的项(例如 Offline_Sys)。
依次展开该目录:Offline_Sys\Microsoft\Windows NT\CurrentVersion。
在右侧窗口中,查看以下关键键值即可获取详细信息:
​ProductName: 系统版本(如 “Windows 11 专业版”)。
​CurrentBuild: 系统内部版本号(如 “22621”)。
​DisplayVersion: 系统显示版本(如 “23H2”)。
​ReleaseId: 发行ID。
​卸载配置单元​:
查询完成后,回到注册表编辑器,选中你创建的 Offline_Sys项。
再次点击 ​文件 > 卸载配置单元,以避免对注册表造成任何影响。
发表于 2025-9-26 08:29:29 | 显示全部楼层
方法二:查看系统文件属性
如果加载注册表遇到问题,这是一种备选方案。

在 PE 中进入离线系统的系统目录,通常是 C:\Windows\System32。

找到一个系统核心文件,例如 ​kernel32.dll、shell32.dll​ 或 ​ntoskrnl.exe。

右键点击该文件,选择 ​属性,然后切换到 ​​“详细信息”​​ 标签页。

在“文件版本”或“产品版本”等字段中,通常会包含系统的版本和构建信息
 楼主| 发表于 2025-9-26 11:45:20 | 显示全部楼层
坛子里面找到个代码
$aDllCallReturn = DllCall("winbrand.dll","wstr","BrandingFormatString","wstr","%WINDOWS_LONG%")
If @error Then
   Switch @error
      Case 1
         MsgBox(0,"DllCall Code Generator","DllCall错误(winbrand.dll/BrandingFormatString): 不能使用DLL文件,可能使用参数有问题。")
      Case 2
         MsgBox(0,"DllCall Code Generator","DllCall错误(winbrand.dll/BrandingFormatString): 未知的返回值类型.")
      Case 3
         MsgBox(0,"DllCall Code Generator","DllCall错误(winbrand.dll/BrandingFormatString): 函数未包含在DLL文件中。函数名称是区分大小写的哦!")
      Case 4
         MsgBox(0,"DllCall Code Generator","DllCall错误(winbrand.dll/BrandingFormatString): 参数数量错误!")
      Case 5
         MsgBox(0,"DllCall Code Generator","DllCall错误(winbrand.dll/BrandingFormatString): 错误的参数!")
      Case Else
         MsgBox(0,"DllCall Code Generator","DllCall错误(winbrand.dll/BrandingFormatString): 未知/不可预期的错误!")
   EndSwitch
   $vDllCallReturn = ""
Else
MsgBox(0,"","当前系统: " & $aDllCallReturn[0])
EndIf
不过它只是判断当前系统的
 楼主| 发表于 2025-9-26 23:15:36 | 显示全部楼层
redapple2008 发表于 2025-9-26 08:29
方法一:查询离线系统注册表
这是最推荐的方法,因为系统的所有版本信息都权威地存储在注册表中。
​加载 ...

帖子里面说过ProductName显示的是“Windows 10 Enterprise ”!这是Win11最纳闷的地方,不然我也不发帖求助了
发表于 2025-10-4 17:57:03 | 显示全部楼层
不懂就问,,PE的下不是还没有安装系统进去吗,是想要PE的系统版本?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2026-5-17 20:38 , Processed in 0.062288 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表