我想从注册表中删除以下节点。我该怎么做呢?
HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{D9AC2148-5E15-48AD-A693-E48714592381}我有这么多:
string key = "D9AC2148-5E15-48AD-A693-E48714592381";
StringBuilder sb = new StringBuilder(key);
RegistryKey k = Registry.ClassesRoot.OpenSubKey("Wow6432Node\\CLSID", true);我该如何继续?
发布于 2011-09-16 14:52:25
您可以使用DeleteSubKey方法:
string key = "{D9AC2148-5E15-48AD-A693-E48714592381}";
Registry.ClassesRoot.DeleteSubKey(@"Wow6432Node\CLSID\" + key);发布于 2011-09-16 15:33:42
您需要考虑registry redirection;这才是真正的问题所在。在32位机器上,您需要的密钥的路径中没有WoW6432Node。
您正在尝试删除
HKEY_CLASSES_ROOT\CLSID\{D9AC2148-5E15-48AD-A693-E48714592381}从注册表的32位视图。微软非常清楚,你不应该在你的应用程序中硬编码WoW6432Node:
重定向键映射到Wow6432Node下的物理位置。例如,HKEY_LOCAL_MACHINE\Software被重定向到HKEY_LOCAL_MACHINE\Software\Wow6432Node。但是,应将重定向密钥的物理位置视为系统保留。应用程序不应直接访问密钥的物理位置,因为此位置可能会更改。
因此通过调用以下方法删除密钥
DeleteSubKey(@"HKEY_CLASSES_ROOT\CLSID\{D9AC2148-5E15-48AD-A693-E48714592381}")但是使用重定向器来确保您在注册表的32位视图上操作。
在.NET中,您可以通过两种方式实现所需的功能。
RegistryView.Registry32 ( .NET 4中的新功能)打开注册表的32位视图。如果你没有.NET 4,那么你必须使用P/Invoke.https://stackoverflow.com/questions/7441124
复制相似问题