Разрешения безопасности реестра .Net - Пользователь с разрешениями не может получить доступ к реестру - PullRequest
2 голосов
/ 11 сентября 2009

Для моего приложения .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

1 Ответ

1 голос
/ 11 сентября 2009

Обновление:

Я выяснил, в чем проблема с доступом к различным подпунктам, как к каталогам, так и к реестрам. Похоже, ACL применяется ТОЛЬКО к дочерним элементам, а не к корневому элементу. Проблема ниже - это вопрос о том, как решить эту проблему:

C # - Windows ACL - Применение унаследованных разрешений

...