【发布时间】:2014-01-20 20:03:07
【问题描述】:
我搜索了一堆,要么没有使用正确的关键词,要么有一个独特的问题,因为我没有找到任何特定于我所看到的内容。
我在工作中继承了一个项目,用 C++ 编写并使用 WindowsAPI,它应该识别当前连接到机器的 USB 驱动器,显示这些驱动器的制造商、型号和序列号。这都存储在注册表中。目前程序通过以下方式访问所需的注册表:
RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Control\\DeviceClasses\\{53f56307-b6bf-11d0-94f2-00a0c91efb8b}"), 0, KEY_READ, &hKey)
然后使用对 RegQueryInfoKey 和 RegEnumKeyEx 的调用组合计算密钥
/#/Control/Linked 对于每个条目,如果 Linked 等于 1,则驱动器已连接。
这在 Windows 7 中运行良好,我遇到的问题是将程序移植到 Windows 8.1 它根本不返回任何 USB 驱动器,即使它们在文件资源管理器中可见。
运行 regedit 并比较 Windows 7 和 8.1 我注意到在 win8.1 中,当我展开注册表时,我在任何地方都看不到 Control 键,当我展开注册表时,我得到的只是没有设置值的 #。
所以问题是,在迁移到 Win8.1 时,是我遗漏了什么还是微软在这方面做了一些改变。如果事实证明我不能再为此目的使用此注册表,是否有人对我如何去做有建议?
提前感谢您的帮助。
【问题讨论】:
标签: c++ winapi windows-8 registry