Не могу редактировать 32-битный реестр в C # (локальный компьютер) - PullRequest
0 голосов
/ 24 января 2019

Проблема, с которой я сталкиваюсь, заключается в том, что когда я добавляю код, показанный ниже, он добавляет его в 64-битную версию regedit. Я хочу использовать приведенный ниже код для 32-битной версии, потому что он не работает в 64-битной версии.

Вот мой код:

Microsoft.Win32.RegistryKey keyyyyy;
keyyyyy = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList", true);
keyyyyy.SetValue("Sysaccounts", 0);
keyyyyy.Close();

1 Ответ

0 голосов
/ 24 января 2019

Чтобы использовать 32-разрядное представление реестра:

var regularx32View = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);

using (RegistryKey regKey32 = regularx32View.CreateSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList", true))
{
      regKey32.SetValue("Sysaccounts", 0);    
}

Чтобы использовать 64-разрядное представление реестра:

var regularx64View = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);

using (RegistryKey regKey64 = regularx64View.CreateSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList", true))
{
      regKey64.SetValue("Sysaccounts", 0);    
}

Имя SysWOW64 нелогично.64-я часть имени может (ошибиться) заставить кого-то поверить в то, что она имеет 64-битные ключи, но на самом деле она имеет 32-битные ключи.

Вот соответствующая статья

...