无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 216689|回复: 982
打印 上一主题 下一主题

[原创] 开源的硬件信息工具nwinfo [20260125]

    [复制链接]
1#
发表于 2023-6-12 07:31:30 | 显示全部楼层
当前最新构建的版本无法获取 UEFI 相关信息, nwinfo 返回错误信息: Failed to calculate string length in NWL_NodeAttrSetf

测试系统为 Windows 8.1 x64


点评

怀疑你的 UEFI 启动项描述里面是不是有非正常的 UCS-2 字符。 如果还不行,请用 BOOTICE 查看 UEFI 启动项并截个图。  详情 回复 发表于 2023-6-12 20:26
回复

使用道具 举报

2#
发表于 2023-6-12 21:24:56 | 显示全部楼层
wintoflash 发表于 2023-6-12 20:26
怀疑你的 UEFI 启动项描述里面是不是有非正常的 UCS-2 字符。

如果还不行,请用 BOOTICE 查看 UEFI 启 ...

这个版本运行不报错了, 不过这版本的 gui 版本显示的信息比之前的版本少很多, 而且只有英文语言

点评

我觉得 GUI 版本如果完整地显示所有信息,那和 CLI 版本就没有什么区别了,还不如导出成 JSON 文件然后用浏览器看(http://json.parser.online.fr/) 把压缩包里面附带的的 gnwinfo.example.ini 改名为 gnwinfo.i  详情 回复 发表于 2023-6-12 21:41
回复

使用道具 举报

3#
发表于 2023-6-20 21:20:36 | 显示全部楼层
wintoflash 发表于 2023-6-12 21:41
我觉得 GUI 版本如果完整地显示所有信息,那和 CLI 版本就没有什么区别了,还不如导出成 JSON 文件然后 ...

您好! 您知不知道怎么用 SetFirmwareEnvironmentVariableW 或 NtSetSystemEnvironmentValueEx 删除 UEFI 启动项?
我试了一下把上述中的函数的参数 VariableName 设置为启动项序号(BootXXXX), 指针和缓冲区均为空(或 0), 此时一些工具均不再显示相关启动项, 但 bootice 在查询 UEFI 启动序列时会报错
用 bcdedit /enum firmware 命令刷新一下可以解决 bootice 报错问题(这个方法是在您的其他帖子回复中看到的)

点评

你的方法是正确的。 但是对于启动项 BootXXXX,还要修改 BootOrder 这个变量,把对应的 XXXX 删除。 BootOrder 就是启动项顺序,它的内容为 UINT16 数组,每个 UINT16 数值代表一个启动项。 比如 假设启动项顺序  详情 回复 发表于 2023-6-20 21:42
回复

使用道具 举报

4#
发表于 2023-6-20 21:57:25 | 显示全部楼层
wintoflash 发表于 2023-6-20 21:42
你的方法是正确的。
但是对于启动项 BootXXXX,还要修改 BootOrder 这个变量,把对应的 XXXX 删除。
Bo ...

好的, 谢谢! 我试试看
回复

使用道具 举报

5#
发表于 2023-6-26 11:01:02 | 显示全部楼层
wintoflash 发表于 2023-6-20 21:42
你的方法是正确的。
但是对于启动项 BootXXXX,还要修改 BootOrder 这个变量,把对应的 XXXX 删除。
Bo ...

我测试了几次,用这种方法能够删除第三方工具创建的 uefi 启动条目,但不能删除用 bcdedit 创建的 uefi 启动条目

点评

是不是ZwSetBootOptions会在内部保存一份启动项的数据。  详情 回复 发表于 2023-6-26 11:35
回复

使用道具 举报

6#
发表于 2023-6-26 12:47:31 | 显示全部楼层
wintoflash 发表于 2023-6-26 11:35
是不是ZwSetBootOptions会在内部保存一份启动项的数据。这玩意没法研究。

不知道。
那还是使用 bcdedit 进行启动条目删除较为保险

点评

那用 EasyUEFI 或者 BOOTICE 之类的也不能删除这种启动项。只能 bcdedit 套壳。  详情 回复 发表于 2023-6-26 12:55
回复

使用道具 举报

7#
发表于 2023-6-26 13:06:32 | 显示全部楼层
wintoflash 发表于 2023-6-26 12:55
那用 EasyUEFI 或者 BOOTICE 之类的也不能删除这种启动项。只能 bcdedit 套壳。

嗯,仅 bcdedit 可以。
EasyUEFI,Bootice 和 DiskGenius 都无法删除和更改该启动条目参数。如果硬要使用这些工具进行修改,会导致该启动条目增加(多一个启动条目副本,每修改一次就多一副本)
回复

使用道具 举报

8#
发表于 2024-3-18 20:25:00 | 显示全部楼层
本帖最后由 Bluebells 于 2024-3-18 20:33 编辑

楼主你好! 请问有没有比较好的关于读取磁盘指定偏移量的数据的主意?
我一开始是使用 CreateFile 函数获取磁盘设备句柄, 然后使用 SetFilePointer 设置读取的偏移量, 再使用 ReadFile 读取磁盘指定偏移量的扇区数据. 但是当 DiskGenius 处于正在运行状态时, CreateFile 函数会无法获取目标设备的句柄
已解决! dwShareMode 参数设置 FILE_SHARE_READ | FILE_SHARE_WRITE 就可以了
回复

使用道具 举报

9#
发表于 2025-8-18 16:49:37 | 显示全部楼层
老大! RtlGetNtVersionNumbers 函数获取到的 NtBuildNumber 怎么转换成标准内部版本号(构建号)?

点评

取低16位就可以了 (&= 0xFF) [attachimg]563150[/attachimg] 用有公开文档的RtlGetVersion不好吗?  详情 回复 发表于 2025-8-18 19:55
回复

使用道具 举报

10#
发表于 2025-8-18 20:03:15 | 显示全部楼层
wintoflash 发表于 2025-8-18 19:55
取低16位就可以了 (&= 0xFF)

OK! 据说这个函数获取得到的数据是最正确的, 而且它足够简单!
其它函数可能会受"兼容模式"影响而无法获取到当前系统的真正版本号

点评

我在XP上安装One Core API之后换用不同兼容性,测试 RtlGetVersion 都是正确的。 受影响的应该是 GetVersionEx / GetVersion / VerifyVersionInfo。  详情 回复 发表于 2025-8-18 20:18
回复

使用道具 举报

11#
发表于 2025-8-18 20:39:26 | 显示全部楼层
wintoflash 发表于 2025-8-18 20:18
我在XP上安装One Core API之后换用不同兼容性,测试 RtlGetVersion 都是正确的。
受影响的应该是 GetVer ...

哦, 原来是这样啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2026-1-31 13:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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