Для моего приложения .net у меня есть механизм, который создает специального пользователя на локальной машине. Затем я создаю записи реестра / каталога и назначаю этому вновь созданному пользователю полный доступ к соответствующим вспомогательным ключам / папкам.
Для моего теста я использую Олицетворение, чтобы настроить среду для работы под этим новым пользователем, а затем выполнить некоторые манипуляции с разделами реестра / каталога.
Я использую следующий код для создания раздела реестра (Запуск от имени администратора):
RegistryAccessRule rule = new RegistryAccessRule(LOGON_USER_NAME, RegistryRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow);
RegistrySecurity security = new RegistrySecurity();
security.AddAccessRule(rule);
//Create Test Sub Key in Registry with permissions for the MicaUser
root = Registry.LocalMachine.CreateSubKey(SUB_KEY_ROOT, RegistryKeyPermissionCheck.ReadWriteSubTree);
root.SetAccessControl(security);
RegistryKey key = root.CreateSubKey(SUB_KEY_DELETE, RegistryKeyPermissionCheck.ReadWriteSubTree);
root.Close();
key.Close();
Затем, когда я пытаюсь манипулировать регистром от имени другого пользователя:
RegistryKey root = Registry.LocalMachine.OpenSubKey (SUB_KEY_ROOT);
root.DeleteSubKeyTree (SUB_KEY_DELETE);
Это вызывает исключение разрешений «Невозможно записать в раздел реестра».
Работа с каталогами в порядке и работает, как и ожидалось, однако разрешения реестра не удаются. Я проверил реестр, и пользователю были предоставлены полные разрешения для вложенного ключа.
Ошибка: «Не удается записать в раздел реестра»
ПРИМЕЧАНИЕ. Операции с реестром работают нормально под пользователем Admin, поэтому код правильный.
Есть мысли?
Привет
Tris