首页 > 解决方案 > deletesubkeytree 不删除注册表文件夹

问题描述

我想删除“HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\EXAMPLE”下的注册表中名为EXAMPLE的文件夹及其中的所有值

我试过这个(最后也是真的)

Microsoft.Win32.Registry.LocalMachine.DeleteSubKeyTree(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\EXAMPLE");

并尝试了这个

string keyName = @"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";

using (RegistryKey key = Registry.LocalMachine.OpenSubKey(keyName, true))
{
    key.DeleteSubKeyTree("EXAMPLE", true);
}

他们要么给我一个空异常或参数异常。我怎样才能删除带有所有键的整个文件夹?这样我就可以从批处理中获得类似的效果: REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\EXAMPLE" /f

标签: c#registrydirectory

解决方案


路径不正确,Registry.LocalMachine没有这样的子键@"HKEY_LOCAL_MACHINE\..."。你需要从"SOFTWARE\..".

string keyName = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";

根据您的反馈,您的程序受到Registry Redirector的影响,其中HKEY_LOCAL_MACHINE\Software被重定向到HKEY_LOCAL_MACHINE\Software\Wow6432Node32 位程序,重新编译您的程序AnyCPU (Prefer 32-bit)x64摆脱重定向。

不同 Windows 版本的机制Registry Redirector有所不同,因此我将其留给您进一步阅读,以了解为什么 64/32 在这种情况下很重要。


推荐阅读