以下代码删除了注册表项,但从未进入for循环(它应该输入,因为它检查值是否被删除)为什么会发生这种情况? (我使用的是Windows 10 - 64位)当我导航到LocalMachine\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run
时,我没有看到任何HackerOne
扫描仪值! (我在创建它之后检查了)
RegistryKey rk1 = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
rk1.DeleteValue("HackerOne Scanner", false);
if (Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", "true", true) == null)
{
try
{
RegistryKey rk = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
rk.SetValue("HackerOne Scanner", Application.ExecutablePath);
}
catch { MessageBox.Show("Admin Rights Are Required"); Application.Exit(); }
}
Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", "true", true)
当找不到值时返回true
,而不是null
,因为您将true
作为默认值传递。但是您可以将null
作为默认值传递。
Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", "true", null);
但请注意,您正在搜索的值不是您设置的值,true
vs "HackerOne Scanner"
。这可能不是故意的。