Я борюсь с чем-то очень простым. Я хочу удалить весь раздел реестра через небольшое консольное приложение. Application
— это ключ, который я хочу удалить, независимо от содержащихся в нем значений:
Это то, что я сделал, но значение 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");
}
}
Есть ли что-то очевидное, что я упускаю? Я уже искал другие ответы, но не повезло.
@TheGeneral Я абсолютно пренебрег этим. Я внес некоторые изменения в код, и мне действительно удалось удалить ключ. Спасибо вам за помощь.
Благодаря предложениям в комментариях мне удалось удалить ключ из реестра. Чего мне не хватало, так это явно указать системе, что я хочу использовать представление реестра 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");
}
}
"Есть ли что-то очевидное, что мне не хватает" да, скорее всего.. и это будет виртуализация реестра docs.microsoft.com/en-us/windows/desktop/sysinfo/… я ответил на пару вопросов по этому поводу, и есть много дубликатов, docs.microsoft.com/en-us/dotnet/api/…