Следующий код удалил раздел реестра, но никогда не входит в цикл for (который он должен ввести, поскольку он проверяет, было ли удалено значение или нет), почему это происходит? (у меня виндовс 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 против "HackerOne Scanner". Это может быть непреднамеренно.
Это должен быть новый вопрос. Покажите там код.
Спасибо, это сработало! У меня есть небольшой вопрос, здесь я попытался поймать ошибку, затем показать окно сообщения и выйти из формы с помощью Application.Exit(), но форма не закрывается, знаете, почему?