删除注册表项 - 会发生什么

时间:2014-01-10 09:54:53

标签: c# key registry

我有一个程序,它删除了我之前搜索过的一些注册表项。该程序搜索引用DLL的注册表项,但该DLL不再存在于计算机上。简而言之:它们是垃圾,我想删除它们。但我想知道的是:

我找到的注册表项数量与我删除的键数不同。 例如,在第一次搜索中,我找到了3880 keys,并且有deleted 2230。我发现,有些键写了两次。 HKEY_LOCAL_MACHINE中的副本和HKEY_CLASS_ROOT中的副本。当我只删除HKEY_LOCAL_MACHINE中的副本时,HKEY_CLASS_ROOT中的副本也会被删除(在后台自动,没有我的帮助)。在我的搜索中,我在HKEY中搜索键。

如果这是真的,那么我只能在一个HKEY中搜索。所以我只在HKEY_LOCAL_MACHINE中搜索了我的密钥。现在我找到了2266 keysdeleted 2230。我做了一个比较,发现36个键,我没有删除(也没有计算),不再存在了。

所以我的问题是:后台会发生什么?我的假设是,某些引用会被自动删除,但它有什么规则吗?

2 个答案:

答案 0 :(得分:1)

HKEY_CLASSES_ROOT本身不是一个配置单元,它只是指向HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER下面的键的指针。因此,只有一个密钥被删除。但是Windows在逻辑上将这些键显示为HKEY_CLASSES_ROOT以便于访问。这与HKEY_CURRENT_CONFIG相同。

HKEY_CLASSES_ROOT的内容来自两个来源:HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes和HKEY_CURRENT_USER \ SOFTWARE \ Classes。

来自:http://technet.microsoft.com/en-us/library/cc739822(v=ws.10).aspx

答案 1 :(得分:0)

HKEY_CLASS_ROOT只是HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes的快捷方式。