Добрый день!
Нужно, чтобы программа, когда ее просто запускает юзер запускалась без админских прав (а лучше, чтобы по-тихому без ошибки закрывалась). А вот, когда эту программу открывает другая, то чтобы запускалась с админскими правами.
Реально ли такое реализовать, и если да, то как? (хотя бы на какую тему гуглить)
WindowsPrincipal wp = new WindowsPrincipal(WindowsPrincipal.Identity);
if(!wp.IsInRole(WindowsBuiltInRole.Administrator)){
Environment.Exit(Environment.ExitCode);
}
Вкратце:
WindowsPrincipal - .net класс, предназначеный для определения принадлежности юзера к какой-либо группе.
WindowsPrincipal.Identity - св-во, возвращающее текущее, цитирую msdn, удостоверение пользователя.
IsInRole - функция проверяющая пользователя на принадлежность к группе с, переданным в качестве аргумента, идентификатором.
Exit - вобщем-то понятно. Попытка запуска от админа:
Код:
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "path to executable file";
psi.Verb="runas";
Process.Start(psi);
В висте/семерке должно вылететь окошко UAC.
Verb - сет команд выполняемых при запуске.
p.s:
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
p.p.s:
Аластор, количество аргументов командной строки в любом случае больше нуля - т.к. туда всегда передается еще и адрес исполняемого файла
И при чем тут вообще это? Человеку требуется:
1.запустить исполняемый файл с правами администратора.
2. проверить наличие прав администратора.
p.p.p.s:
Запуск с правами администратора, с помощью манифестов:
[Ссылки могут видеть только зарегистрированные пользователи. ]
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
Последний раз редактировалось •theSaboteur•; 03.11.2011 в 13:04.
Причина: added comment's