小编pro*_*gAK的帖子

在 Windows 中识别连接的驱动器

我搜索了一堆,要么没有使用正确的关键词,要么有一个独特的问题,因为我没有找到任何特定于我所看到的东西。

我在工作中继承了一个项目,用 C++ 编写并使用 WindowsAPI,它应该识别当前连接到机器的 USB 驱动器,显示这些驱动器的制造商、型号和序列号。这都存储在注册表中。目前,该程序通过以下方式访问所需的注册表:

 RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Control\\DeviceClasses\\{53f56307-b6bf-11d0-94f2-00a0c91efb8b}"), 0, KEY_READ, &hKey)
Run Code Online (Sandbox Code Playgroud)

然后使用对每个条目的调用RegQueryInfoKeyRegEnumKeyEx评估键 的组合/#/Control/Linked,如果 Linked 等于 1,则驱动器已连接。

这在 Windows 7 中运行良好,我遇到的问题是将程序移植到 Windows 8.1 即使它们在文件资源管理器中可见,它也不会返回任何 USB 驱动器。

运行 regedit 并比较 Windows 7 和 8.1 我注意到的是,在 win8.1 中,当我展开注册表时,当我展开注册表时,我在任何地方都看不到 Control 键,我得到的只是没有设置值的 #。

所以问题是,在迁移到 Win8.1 时,我是否遗漏了什么或微软在这方面做了一些改变。如果事实证明我不能再为此目的使用此注册表,是否有人建议我如何去做?

感谢您的帮助。

c++ registry winapi windows-8

2
推荐指数
1
解决办法
280
查看次数

标签 统计

c++ ×1

registry ×1

winapi ×1

windows-8 ×1