Как узнать, есть ли у пользователя права администратора или нет? - PullRequest
3 голосов
/ 15 ноября 2011

Я создал программу на C #, которая позволяет изменять фон экрана входа в Windows 7.

Программа должна создать новую папку в папке System32, а также переместить туда файл.,У меня нет проблем с этим на моих персональных компьютерах, но я протестировал его на компьютере друзей, и он отказался создавать каталог.

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

Так что мне было интересно, есть ли способ проверить, какие разрешения имеет пользователь?Или способ обойти это.Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 15 ноября 2011

Чтобы обнаружить это, вы можете получить объект WindowsIdentity, подобный этому:

WindowsIdentity identity = WindowsIdentity.GetCurrent();

Затем создайте экземпляр WindowsPrincipan:

WindowsPrincipal principal = new WindowsPrincipal(identity);

и, наконец, проверьте его с помощью метода IsInRole (), например:

string role = "BUILTIN\\Administrators";
bool IsAdmin = principal.IsInRole(role));

тогда вы можете использовать переменную IsAdmin, чтобы определить, является ли текущий пользователь администратором или нет.

источник - http://csharptuning.blogspot.com/2007/09/detecting-is-current-user-is.html

2 голосов
/ 15 ноября 2011

Проблема в UAC.Это операция, которая требует повышения.Хотя пользователь входит в группу администраторов, процессу по умолчанию предоставляется стандартный токен пользователя.

Решение состоит в добавлении опции requireAdministrator в манифест приложения, чтобы приложение вызывало диалоговое окно повышения прав UAC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...