我正在尝试检查(并删除)注册表项。代码:
RegistryKey registryKey = Registry.CurrentUser.OpenSubKey
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
if (registryKey != null) // <- !!!!!!!!! problem is here, i think
{
registryKey.SetValue("MyApp", codeBase);
}
else
{
registryKey.DeleteValue("MyApp");
}
创建值后,应用程序看不到新值并且不会删除它。 这段代码出了什么问题?感谢。
答案 0 :(得分:0)
您的if
- else
条件存在问题,您在注册表中添加和删除的操作看起来不错。如果要检查然后删除注册表项,则应该这样执行:
string KeyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run";
string valueName = "MyApp";
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
if (Registry.GetValue(KeyName, valueName, null) != null)
{
RegistryKey registryKey = Registry.CurrentUser
.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
registryKey.DeleteValue(valueName);
}
Registry.GetValue(KeyName, valueName, null)
是进行空检查而不是执行registryKey != null
的更好方法,因为registryKey只获取..CurrentVersion\\Run
子项。相反,您应该深入了解应用程序的实际密钥(例如MyApp)。
希望这有帮助!