无忧启动论坛

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

[讨论] [记录] SYSTEM_INFORMATION_CLASS

[复制链接]
发表于 2023-4-26 21:42:31 | 显示全部楼层 |阅读模式
本帖最后由 Bluebells 于 2023-4-26 21:45 编辑

调用 NtQuerySystemInformation(ZwQuerySystemInformation), NtQuerySystemInformationEx(ZwQuerySystemInformationEx) 和 NtSetSystemInformation(ZwSetSystemInformation) 函数可以查询(设置)到很多系统信息. 而其中一个选项需要用到 SYSTEM_INFORMATION_CLASS, 但有很多 class 都没有文档化(未公开)

最近几天找到不少有关这些函数的信息, 故在此整理记录一下

先贴一个网址: https://www.geoffchappell.com/st ... formation_class.htm
上面网页的内容里有一个表格, 里面记录了各个 System Information classes 的值, 名称, 适用版本范围, 备注信息

再贴一个网址: https://github.com/yardenshafir/InformationClasses
这个网页的内容里又有一个表格, 里面记录了各个 System Information classes 适用于哪个函数...
最关键的是这个表格中有列出一些 class 所需的某特权
表格下面还有一些 class 的结构体信息

然后上传一个 NtQuerySystemInformation.h 文件, 里面详细记录了一些 System Information classes 的结构体的详细信息
NtQuerySystemInformation.txt (57.66 KB, 下载次数: 3)
发表于 2023-4-26 22:06:32 | 显示全部楼层
感谢分享!
回复

使用道具 举报

发表于 2023-4-26 22:10:21 | 显示全部楼层
本帖最后由 wintoflash 于 2023-4-26 22:13 编辑

前几天刚研究过这个,没想到你就发贴了。。。http://bbs.wuyou.net/forum.php?m ... &fromuid=487838
--------
不知道用 NtQuerySystemEnvironmentValueEx 是否需要 SE_SYSTEM_ENVIRONMENT_NAME 特权?还有我没有查到这个 API 所需的最低 NT 版本是多少。

点评

NtQuerySystemEnvironmentValue, NtQuerySystemEnvironmentValueEx 和 NtSetSystemEnvironmentValue 函数的资料我也搜索过,但可获得的相关信息量非常少  详情 回复 发表于 2023-4-27 11:03
回复

使用道具 举报

 楼主| 发表于 2023-4-27 11:03:21 | 显示全部楼层
wintoflash 发表于 2023-4-26 22:10
前几天刚研究过这个,没想到你就发贴了。。。http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost& ...

NtQuerySystemEnvironmentValue, NtQuerySystemEnvironmentValueEx 和 NtSetSystemEnvironmentValue 函数的资料我也搜索过,但可获得的相关信息量非常少
回复

使用道具 举报

发表于 2023-4-27 13:29:58 | 显示全部楼层
感谢分享哦
回复

使用道具 举报

发表于 2023-4-27 17:33:35 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2023-5-19 14:36:04 | 显示全部楼层
        很给力!
回复

使用道具 举报

发表于 2025-7-7 12:48:16 | 显示全部楼层
最近研究了一下NtEnumerateBootEntries,NtQueryBootOptions,NtQueryBootEntryOrder等API。
NtEnumerateBootEntries 可以遍历UEFI的 BootXXXX 启动项。
NtQueryBootOptions可以获得 Timeout,BootCurrent,BootNext。
NtQueryBootEntryOrder可以获得UEFI的启动项顺序 BootOrder。
NtTranslateFilePath可以互相转化 EFI Device Path,ARC Path (multi(0)disk(0)rdisk(0)partition(0)),NT Path (\Device\HarddiskVolume1)。
写了个小程序可以打印这些信息:
NTAPITest.zip (16.69 KB, 下载次数: 8)

点评

NtQuerySystemEnvironmentValue, NtQuerySystemEnvironmentValueEx, NtSetSystemEnvironmentValue, NtSetSystemEnvironmentValueEx 这四个函数与 GetFirmwareEnvironmentVariable, GetFirmwareEnvironmentVariableEx  详情 回复 发表于 2025-7-7 13:46
我会简单使用 NtAddBootEntry, NtDeleteBootEntry, NtQueryBootEntryOrder, NtSetBootEntryOrder 和 NtEnumerateBootEntries 这五个函数(刚好用于创建/查询/删除 efi 启动条目) 其余 NtModifyBootEntry, N  详情 回复 发表于 2025-7-7 13:33
回复

使用道具 举报

 楼主| 发表于 2025-7-7 13:33:41 | 显示全部楼层
wintoflash 发表于 2025-7-7 12:48
最近研究了一下NtEnumerateBootEntries,NtQueryBootOptions,NtQueryBootEntryOrder等API。
NtEnumerateB ...

我会简单使用 NtAddBootEntry, NtDeleteBootEntry, NtQueryBootEntryOrder, NtSetBootEntryOrder 和 NtEnumerateBootEntries 这五个函数(刚好用于创建/查询/删除 efi 启动条目)
其余 NtModifyBootEntry, NtQueryBootOptions, NtSetBootOptions, NtTranslateFilePath 等等之类的函数完全不会
回复

使用道具 举报

 楼主| 发表于 2025-7-7 13:46:41 | 显示全部楼层
本帖最后由 Bluebells 于 2025-7-7 13:57 编辑
wintoflash 发表于 2025-7-7 12:48
最近研究了一下NtEnumerateBootEntries,NtQueryBootOptions,NtQueryBootEntryOrder等API。
NtEnumerateB ...

NtQuerySystemEnvironmentValue, NtQuerySystemEnvironmentValueEx, NtSetSystemEnvironmentValue, NtSetSystemEnvironmentValueEx 这四个函数与 GetFirmwareEnvironmentVariable, GetFirmwareEnvironmentVariableEx, SetFirmwareEnvironmentVariable, SetFirmwareEnvironmentVariableEx 这四个函数基本差不多, 前四个函数与后四个函数的区别在于函数的前两个参数 (NT 函数的前两个参数都是使用 UNICODE_STRING 结构体作为参数)
回复

使用道具 举报

发表于 2025-7-7 13:52:38 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2025-7-7 17:08:12 | 显示全部楼层
感谢分享。。。。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-9-6 21:51

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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