Невозможно удалить ключ реестра - PullRequest
1 голос
/ 11 июня 2019

Я борюсь с чем-то действительно простым. Я хочу удалить весь раздел реестра через небольшое консольное приложение. Application - это ключ, который я хочу удалить, независимо от содержащихся в нем значений:

Path

Это то, что я сделал, но значение subKey всегда кажется нулевым:

static void Main(string[] args)
{
        string keyPath = "SOFTWARE\\Apps";
        var hklm = Registry.LocalMachine;
        var subKey = hklm.OpenSubKey(keyPath, true);

        if(subKey != null)
        {
            subKey.DeleteSubKey("Application");
            Console.WriteLine("DELETED");
        }
        else
        {
            Console.WriteLine("NOT FOUND");
        }
}

Есть ли что-то очевидное, что я упускаю? Я уже искал другие ответы, но совсем не повезло.

1 Ответ

1 голос
/ 11 июня 2019

Благодаря предложениям в комментариях мне удалось удалить ключ из реестра.Чего мне не хватало, так это явного указания системе, что я хочу использовать представление реестра для 64-битной версии.

Мне пришлось изменить код следующим образом:

static void Main(string[] args)
{
        string keyPath = "SOFTWARE\\Apps";
        var subKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(keyPath, true); // This method accepts the RegistryView parameter.

        if (subKey != null)
        {
            subKey.DeleteSubKey("Application");
            Console.WriteLine("DELETED");

        }
        else
        {
            Console.WriteLine("NOT FOUND");
        }
}
...