Редактирование Local_Machine RegistryKeys программно (C #) - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь создать программу, которая изменяет значения разделов реестра на удаленных компьютерах, чтобы блокировать / разрешать пользователям персонализировать свои образы экрана блокировки.Кажется, ключ, который мне нужно создать, находится по адресу HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Personalization с именем NoChangingLockScreen.Я мог бы легко сделать это с помощью файла .reg и объединить любые изменения в их реестр (я планировал создать службу Windows для отслеживания изменений в файле), хотя кажется, что я даже не могу изменить какие-либо ключи внутри класса HKEY_LOCAL_MACHINE.Обратите внимание:

  • Я являюсь администратором домена в нашей сети, и все удаленные компьютеры имеют права администратора
  • Эта проблема возникает не только при изменении ключей удаленного компьютера, но и у меня.а также
  • Я создал объект RegistryKey как доступный для записи (см. код ниже)
  • Кажется, я даже не могу использовать метод OpenSubKey, поскольку чтение пути local_machine просто вызывает исключение объекта
  • Я проверил разрешения внутри Реестра для этого конкретного класса и убедился, что моя учетная запись имеет полный контроль
  • Я нашел очень мало документации по другим людям, имеющим проблемы с разрешениями

    RegistryKey myKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Policies\Microsoft\Windows", true);
    

1 Ответ

0 голосов
/ 27 сентября 2018

Registry.ClassesRoot для HKEY_CLASSES_ROOT.Вам необходимо использовать поле Registry.LocalMachine следующим образом:

using (var registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Policies\Microsoft\Windows", writable: true))
{
    ...
}

Также обратите внимание, что это для локального доступа к реестру.Если вы хотите открыть удаленный реестр, вам нужно использовать другой метод:

using (var remoteBaseKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "RemoteMachineName"))
using (var registryKey = remoteBaseKey.OpenSubKey(@"SOFTWARE\Policies\Microsoft\Windows", writable: true))
{
    ...
}
...