Удаление реестра, кажется, не вступает в силу - PullRequest
1 голос
/ 20 апреля 2019

Следующий код удаляет раздел реестра, но никогда не входит в цикл 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(); }
    }

1 Ответ

1 голос
/ 20 апреля 2019
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". Это не может быть преднамеренным.

...