Запуск программы на C# с правами администратора
Запись от LapisAlchemist размещена 08.04.2012 в 17:05
Метки c-sharp
Довольно часто встречаются на форумах программистов подобные темы. Решения предлагают разные, одни работают, другие нет. Описанный ниже способ запуска программы с правами администратора основан на одном примере, найденном мной на просторах Интернета. Он прекрасно работает на C#. На VB.NET, возможно, будет немного другая реализация, но, как правило, профессиональные программы создаются именно на C (C, C++, C# и т. д.), IMHO. Рассмотрим теорию: при старте программы, естественно, нужно проверить, с какими правами она запущена, т. к. пользователь может открыть программу, выбрав в контекстном меню Проводника пункт "Запуск с правами администратора". Далее, если программа имеет обычные права, запустить новую копию программы уже с правами администратора и завершить текущую; иначе просто начинать работу. В C# (проекты типа Windows Forms) программа практически начинает работу с кода, записанного в файле Program.cs. По умолчанию он имеет такой вид (вместо Form1() может быть написано имя формы, которая в проекте была создана первой):
Немного не по теме, но пригодится
Вместо Form1 можно указать новый экземпляр любой другой формы, входящей в пространство имен текущего проекта, т. е. созданной в этом проекте. Таким образом, можно задать, с какой формы программа начинает работу (в VB.NET это можно сделать в свойствах проекта)
Логично, что проверку имеющихся у программы прав можно выполнить в самом начале этой процедуры, а три имеющихся строки выполнять только в том случае, если программа имеет права администратора. Итак, проверка имеющихся у приложения прав выполняется так:
Значит, если переменная имеет значение true, нужно выполнять программу, иначе запустить новую копию с правами администратора. Последнее делается так:
|
Всего комментариев 6
Комментарии
-
Добротненько. А что за псевдоним "runas" ?
Запись от silicium размещена 08.04.2012 в 23:19 -
В данном случае кодом
мы "указываем" системе, что процесс-программу нужно запустить с правами администратора. То есть если не писать эту строку, программа запустится с обычными правами. Этот параметр специфичен для файлов-программ (*.exe) и вообще для тех файлов, у которых в контекстном меню Проводника есть пункт "Запуск с правами администратора"C# 1
ProcessInfo.Verb = "runas";
.
А вообще свойству Verb присваивают значение в зависимости от типа файла, который открывается запускаемым процессом. Возможные параметры-значения содержатся в свойстве Verbs того же ProcessStartInfo. Если открывать текстовый файл, то можно указать Verb равным "Print", тогда файл будет выведен на принтер по умолчанию.
Про свойство Verb написано на MSDN:http://msdn.microsoft.com/en-u... .verb.aspx.Запись от LapisAlchemist размещена 09.04.2012 в 22:09 -
Интересное название свойства просто.
Подозреваю, что в startInfo.Arguments можно указать любого пользователяЗапись от silicium размещена 10.04.2012 в 10:31 -
Запись от OwenGlendower размещена 23.03.2015 в 03:17 -
С какой версии появилась такая функция?
Запись от silicium размещена 30.03.2015 в 18:04 -
Цитата:Сообщение от siliciumС какой версии появилась такая функция?
Цитата:Сообщение от Hans PassantThis works on VS2008 and higherЗапись от tezaurismosis размещена 06.04.2015 в 15:22
Обновил(-а) tezaurismosis 06.04.2015 в 15:23