deletesubkeytree не удаляет папку реестра - PullRequest
0 голосов
/ 12 ноября 2018

Я хочу удалить папку с именем EXAMPLE и все значения в ней в реестре, который находится в папке "HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ EXAMPLE"

Я пробовал это (с истиной в конце, а также)

Microsoft.Win32.Registry.LocalMachine.DeleteSubKeyTree(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\EXAMPLE");

и попробовал это

string keyName = @"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";

using (RegistryKey key = Registry.LocalMachine.OpenSubKey(keyName, true))
{
    key.DeleteSubKeyTree("EXAMPLE", true);
}

Они либо выдают мне нулевое исключение, либо исключение аргумента. Как я могу просто удалить всю папку со всеми ее ключами? Так что я могу получить аналогичный эффект от партии: REG DELETE "HKLM \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ EXAMPLE" / f

1 Ответ

0 голосов
/ 12 ноября 2018

Путь неверный, Registry.LocalMachine не имеет такого дополнительного ключа @"HKEY_LOCAL_MACHINE\...".Вам нужно начинать с "SOFTWARE\..".

string keyName = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";

. И по вашим отзывам ваша программа подвержена влиянию перенаправителя реестра , в котором HKEY_LOCAL_MACHINE\Software перенаправляется на HKEY_LOCAL_MACHINE\Software\Wow6432Node для32-разрядная программа, перекомпилируйте вашу программу с AnyCPU (Prefer 32-bit) на x64, избавьтесь от перенаправления.

Механизм Registry Redirector зависит от версии Windows, поэтому я оставляю это вам для дальнейшего чтения, чтобы понять, почему 64/32 имеет значение в этом случае.

...