打开设备的软件密钥
不得直接打开设备 的软件密钥。 与任何注册表项一样,这些注册表项的位置或格式可能会在不同版本的 Windows 之间更改。
注意
只有在找到相应的设备后,才应打开设备的软件密钥。 有关此过程的详细信息,请参阅 枚举已安装的设备。
若要打开或创建设备的软件密钥,请遵循以下准则:
注意
必须设置 参数,在其中向所需的最低访问权限提供请求的安全访问权限。 不能将此参数设置为 KEY_ALL_ACCESS。 有关如何为注册表访问指定访问权限的详细信息,请参阅 安全地访问注册表项。
若要打开现有软件密钥,请将CM_Open_DevNode_Key与包含CM_REGISTRY_SOFTWARE的RegDisposition_OpenExisting和 ulFlags的处置配合使用,或使用 DIREG_DRV 的 SetupDiOpenDevRegKey 和 KeyType 参数。
若要创建软件密钥,请将 CM_Open_DevNode_Key 与包含CM_REGISTRY_SOFTWARE的 RegDisposition_OpenAlways 和 ulFlags处置配合使用,或使用 DIREG_DRV 的 SetupDiCreateDevRegKey 和 KeyType 参数。
内核模式调用方应使用 IoOpenDeviceRegistryKey 并将DevInstKeyType 参数设置为 PLUGPLAY_REGKEY_DRIVER。
修改设备的软件键中的注册表值
不得修改设备软件密钥中) 设备属性 (以下注册表项的值:
DriverDate
DriverDateData
DriverDesc
DriverVersion
InfPath
InfSection
InfSectionExt
MatchingDeviceId
ProviderName
EnumPropPages32
这些设备属性表示设备的安装状态。 直接修改这些属性可能会使设备的安装状态失效。 例如,更改与 INF 文件 相关的信息会使有关与设备和驱动程序签名信息等属性关联的驱动程序文件的信息失效。 更改驱动程序版本或驱动程序日期可能会中断Windows 更新功能。
注意
从 Windows Vista 开始,操作系统对这些属性施加“仅安装时”访问限制。 为了兼容,可以复制值,在设备安装期间直接修改值不会影响内部状态。