我有一个程序,它删除了我之前搜索过的一些注册表项。该程序搜索引用DLL的注册表项,但该DLL不再存在于计算机上。简而言之:它们是垃圾,我想删除它们。但我想知道的是:
我找到的注册表项数量与我删除的键数不同。
例如,在第一次搜索中,我找到了3880 keys
,并且有deleted 2230
。我发现,有些键写了两次。 HKEY_LOCAL_MACHINE
中的副本和HKEY_CLASS_ROOT
中的副本。当我只删除HKEY_LOCAL_MACHINE
中的副本时,HKEY_CLASS_ROOT
中的副本也会被删除(在后台自动,没有我的帮助)。在我的搜索中,我在HKEY中搜索键。
如果这是真的,那么我只能在一个HKEY中搜索。所以我只在HKEY_LOCAL_MACHINE
中搜索了我的密钥。现在我找到了2266 keys
和deleted 2230
。我做了一个比较,发现36个键,我没有删除(也没有计算),不再存在了。
所以我的问题是:后台会发生什么?我的假设是,某些引用会被自动删除,但它有什么规则吗?
答案 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的快捷方式。