出于以下原因,不应使用 CM_Delete_DevNode_Key 或 SetupDiDeleteDevRegKey 删除设备 的软件密钥 或 硬件密钥 :
CM_Delete_DevNode_Key 和 SetupDiDeleteDevRegKey 删除注册表项中的所有自定义设置。 这包括:
安装期间指定的设置。
由设备驱动程序创建或修改的设置。
由应用程序或其他组件创建或修改的设置。
CM_Delete_DevNode_Key 和 SetupDiDeleteDevRegKey 还会删除关键设备安装状态。
使用 范围为 CM_Open_DevNode_Key 或 SetupDiOpenDevRegKey 打开的软件或硬件密钥DICS_FLAG_GLOBAL包含有关设备安装状态的数据。 访问范围为 DICS_FLAG_CONFIGSPECIFIC 的软件或硬件密钥不包含设备安装状态。
在任一情况下,删除这些软件或硬件密钥都可能对其他设备安装组件产生影响。
不应假设是否存在设备注册表项。 卸载设备后,系统会自动删除设备的所有软件和硬件密钥。
可以使用标准注册表函数安全地创建和删除硬件或软件项下的注册表子项。 通过使用这些函数,可以避免系统与其他组件之间的命名冲突。 此外,如果使用这些函数创建子项,子项将继承父注册表项的默认权限。 有关详细信息,请参阅 打开、创建和关闭密钥。
有关标准注册表函数的详细信息,请参阅 注册表函数。