Можно ли получить права пользователя Администратор на Windows 7 из кода?

Здравствуйте!
Мне необходимо выполнить некоторый код с правами пользователя Администратор. Для этого я действую по следующей схеме:
1). Выполняю логин пользователя который является администратором (первый пользователь который создаётся при установке Windows) с помощью WinApi функции Logon;
2). Создаю экземпляр класса WindowsIdentity на основе полученного после логина токена;
3). Олицетворяю пользователя представленного экземпляром WindowsIdentity и получаю контекст WindowsImpersonationContext.
После этого, и до тех пор пока не будет вызван метод Undo экземпляра класса WindowsImpersonationContext (или пока не будет вызван Dispose, вот тут не понял) я смогу выполнять код с повышенными правами. Но проблема в том, что этот пользователь хоть и имеет права администратора, но сам таковым не является, поэтому, например, я могу осуществить запись в его папку (чего с правами обычного пользователя я конечно же сделать не смог бы), но поднять или опустить сетевой интерфейс я не могу. Для этого уже надо запускать процесс изначально от имени Администратора, например, с помощью runas или из контекстного меню - "Запуск от имени администратора". Но хотелось бы всё это сделать из кода. Вопрос в том, возможно ли это? Ведь, насколько я понимаю, Windows не даёт полных административных прав даже тем пользователям, которые входят в группу "Администраторы". Такими правами обладает только пользователь Администратор, но он отключён, и включать его ради этого, думаю, не лучшая идея.
Спасибо за внимание!
  • Вопрос задан
  • 528 просмотров
Пригласить эксперта
Ответы на вопрос 2
@serber
Можно в манифесте приложения указать необходимость прав администратора. В этом случае при запуске будет появляться окно UAC. Пример
Ответ написан
@Sing303
В windows невозможно изменить права у процесса во время исполнения. Можно только запустить с правами.
Кроме перезапуска или использовании отдельного приложения для нужной функциональности других вариантов нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы