Polytech-soft.com

ПК журнал
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Запуск от имени администратора c

Персональный блог Толика Панкова

Стихи, рассказы, философия, IT, политика, панкизм, раздолбайство и болтовня.

После ссоры с гражданской супругой боец самообороны Крыма отфрендил на «Одноклассниках» покойного бендеровца Сашко Белого

C#, запуск программы от имени администратора

Или как я сделал недо-sudo для Windows 7

У меня для работы понаписана куча батников для всяких мелких задач: перенастройки сетевых соединений, включения/отключения устройств и т.д. Некоторые команды требуют повышения уровня доступа до администратора, потому батники отказались на семерке работать.

Поскольку работаю я в основном в консоли, да и рабочий стол захламлять не охота, то от создания кучи ярлыков на нужные батники я отказался. Про штатный runas в Windows я знаю, но он меня тоже не устроил. Хотелось, чтоб как в новом Far Manager’е — при необходимости выполнить операцию от имени администратора, выскакивало стандартное окошко виндового UAC, запрашивалось подтверждение и выполнялась нужная команда.
В общем решил я написать быстренько свой недо-sudo на C#, благо действительно получилось быстро и удобно.

Рассуждения и подготовка

Способ, вполне штатный, произвести такое дело с помощью C# есть, но о нем ближе к концу. Пока скажу, что для запуска внешнего процесса нужен будет полный путь к исполняемому файлу, а прописывать его каждый раз очень сильно влом, потому батники пусть лежат в каталоге, доступном в PATH , а нам придется немного «прикинуться операционкой» и вести себя как она. А операционка действует просто. Если просто введена команда без расширения, то она ищет сначала в текущем каталоге, а потом в каталогах из переменной PATH файл с расширением .com, .exe, .bat, .cmd — нашла, значит выполняет.
Так и будем делать.

1. Заводим два массива, со списком расширений и для хранения списка директорий, в которых будем искать файл:

private static string[] FindDirs = null;
private static string[] Extensions = new string[] <"com","exe","bat","cmd">;

2. Функцию для получения списка каталогов из PATH Копия
3. Функцию, которая будет собирать список каталогов, в которых будет производиться поиск. Не буду здесь ее приводить, она просто добавляет текущую директорию (с помощью Directory.GetCurrentDirectory() ) и список, полученный на предыдущем шаге в массив. См. в классе FindApp функцию GetFindDirs()
4. Понадобится функция, определяющая по расширению, является ли файл исполняемым. Она тоже довольно проста. См. ссылку выше private static bool IsExecutable(FileInfo fi) . Структуру FileInfo сформируем на шаге поиска далее. Она в цикле сравнивает расширение файла, если оно указано, со списком расширений исполняемых файлов.
5. Функцию, которая ищет файл, если расширение не задано private static string FindNoExt(string path, string FileName) Она проверяет, заканчивается ли путь к директории символом , в цикле подставляет расширения и проверяет наличие файла по указанному пути с помощью File.Exists() . Если файл найден — возвращает полный путь, если нет — null .

Функция Find (string Command) в классе FindApp

1. Получаем список каталогов, в которых будем искать, с помощью ранее описанной функции GetFindDirs()
2. Создаем класс FileInfo :

FileInfo fi = new FileInfo(Command);

3. Проверяем, был ли задан путь к исполняемому файлу. Тут надо остановиться немного подробнее. Если в команде Command путь задан не был, то свойство DirectoryName класса FileInfo будет содержать текущий каталог, что никак нам не поможет. Поэтому, надо проверить, был ли задан полный путь. Проще всего это сделать, проверив, содержала ли команда Command символ :
if (Command.Contains(«\»))
.

4. Если каталог указан, то проверяем, указано ли расширение. Тут можно воспользоваться свойством Extension структуры FileInfo . Оно будет пустым, если расширение не задано. Если расширение задано, то проверяем, является ли файл исполняемым, и в случае, если да — возвращаем его полный путь. Если расширение не указано, пытаемся найти в каталоге исполняемый файл с помощью ранее созданной функции FindNoExt .
5. Если каталог не задан в команде, то выполняем шаг 4 для каждого каталога из списка поиска, пока не найдем файл. Если файл так и не будет найден, значит возвращаем null .

Проверка админских прав

Сначала мы должны проверить, а нет ли прав администратора у нас уже. Для этого надо будет подключить пространство имен using System.Security.Principal;
Сама проверка вынесена в отдельную функцию:

Подключаем пространство имен using System.Diagnostics;

Сначала формируем структуру ProcessStartInfo из пути к программе и параметров. Далее проверяем наличие админских прав, если их нет, то указываем системе, что процесс-программу нужно запустить с правами администратора с помощью psi.Verb = «runas»;
Далее запускаем процесс.
Проверки, правда, минимальные. И наверняка, кривые.

Ну тут вообще все элементарно. Это консольное приложение, при запуске которого ему передаются в командной строке параметры. Первый — имя вызываемой команды, остальные — ее параметры. См. здесь

Разрешения пользователей и Visual Studio User permissions and Visual Studio

Для обеспечения безопасности следует по возможности запускать Visual Studio от имени обычного пользователя. For reasons of security, you should run Visual Studio as a typical user whenever possible.

Также необходимо компилировать, запускать и отлаживать только те решения Visual Studio, которые получены от надежных людей или из надежных расположений. You should also make sure not to compile, launch, or debug any Visual Studio solution that does not come from a trusted person or a trusted location.

Читать еще:  Административно правовое регулирование в сфере образования

Под именем обычного пользователя в Visual Studio IDE можно делать практически все. You can do nearly everything in the Visual Studio IDE as a typical user. Разрешения администратора необходимы для выполнения следующих задач. You need administrator permissions to complete the following tasks:

Область AreaЗадача TaskДополнительные сведения For more information
Установка InstallationУстановите или измените Visual Studio. Install or modify Visual Studio.Установка Visual Studio, изменение Visual Studio Install Visual Studio, Modify Visual Studio
Установка, обновление или удаление содержимого локальной справки. Install, update, or remove local Help content. Установка содержимого локальной справки и управление им Install and manage local Help content
Область элементов ToolboxДобавление классических элементов управления COM в панель элементов. Add classic COM controls to Toolbox. Панель элементов Toolbox
Сборка BuildingИспользование выполняющихся после сборки событий, которые регистрируют компонент. Use post-build events that register a component. Сведения о настраиваемых этапах сборки и событиях сборки Understand custom build steps and build events
Включение этапа регистрации при сборке проектов С++. Include a registration step when you build C++ projects.
Отладка DebuggingОтладка приложений с повышенными разрешениями. Debug applications that run with elevated permissions. Параметры отладчика и подготовка Debugger settings and preparation
Отладка приложений, выполняемых под другой учетной записью пользователя, например веб-сайтов ASP.NET. Debug applications that a run under a different user account, such as ASP.NET websites. Отладка приложений ASP.NET и AJAX Debug ASP.NET and AJAX applications
Отладка в зоне для приложений XAML-браузера (XBAP). Debug in Zone for XAML Browser Applications (XBAP). Основное приложение WPF (PresentationHost.exe) WPF host (PresentationHost.exe)
Использование эмулятора для отладки проектов облачных служб для Microsoft Azure. Use the emulator to debug cloud service projects for Microsoft Azure. Отладка облачной службы в Visual Studio Debug a cloud service in Visual Studio
Настройка брандмауэра для удаленной отладки. Configure a firewall for remote debugging. Удаленная отладка Remote debugging
Средства производительности Performance toolsПодключение к приложению с повышенными правами. Attaching to an elevated application. Руководство по профилированию производительности для начинающих Beginners guide to performance profiling
Используйте профилировщик GPU. Use the GPU Profiler. Профилирование GPU GPU profiling
Развертывание DeploymentРазвертывание веб-приложения в службах IIS на локальном компьютере. Deploy a web application to Internet Information Services (IIS) on a local computer. Развертывание веб-приложения ASP.NET с помощью Visual Studio Deploy an ASP.NET web app using Visual Studio

Запуск Visual Studio от имени администратора Run Visual Studio as an administrator

Если необходимо запустить Visual Studio от имени администратора, выполните следующие действия, чтобы открыть интегрированную среду разработки. If you need to run Visual Studio as an administrator, follow these steps to open the IDE:

Эти инструкции предназначены для Windows 10. These instructions are for Windows 10. Для других версий Windows они аналогичны. They are similar for other versions of Windows.

Откройте меню Пуск и перейдите к Visual Studio 2017. Open the Start menu, and scroll to Visual Studio 2017.

При помощи щелчка правой кнопкой или контекстного меню Visual Studio 2017 выберите Дополнительно > Запуск от имени администратора. From the right-click or context menu of Visual Studio 2017, select More > Run as administrator.

После запуска Visual Studio в заголовке окна после имени продукта будет указано (Администратор) . When Visual Studio starts, (Administrator) appears after the product name in the title bar.

Откройте меню Пуск и перейдите к Visual Studio 2019. Open the Start menu, and scroll to Visual Studio 2019.

При помощи щелчка правой кнопкой или контекстного меню Visual Studio 2019 выберите Дополнительно > Запуск от имени администратора. From the right-click or context menu of Visual Studio 2019, select More > Run as administrator.

После запуска Visual Studio в заголовке окна после имени продукта будет указано (Администратор) . When Visual Studio starts, (Administrator) appears after the product name in the title bar.

Можно также изменить ярлык приложения, чтобы всегда запускать его с правами администратора. You can also modify the application shortcut to always run with administrative permissions.

Запуск от имени администратора любой программы

В операционной системе Windows при определенных ситуациях средства необходимо использовать с повышенными привилегиями. Так нужно из-за действий, приводящих к изменениям на системном уровне и обычным пользователям (не админам) это не нужно. В статье я расскажу про запуск от имени администратора любого приложения на компьютере.

Чтобы облегчить пользователям запуск программ от имени администратора я подготовил парочку методов.

Запуск от имени администратора с помощью контекстного меню

Контекстное меню вызывается правой кнопкой мышки. Жмём по любой программе мышкой и из контекстного меню нажимаем по опции «Запуск от имени администратора». Так открывается командная строка и прочая программа, где необходимы повышенные привилегии.

Использование сочетания Ctrl+Shift+Enter при поиске

Когда на рабочем столе или в меню Пуск нет какого-либо инструмента мы обращаемся к поиску. Любая версия Windows оснащена им, а в десятой он наиболее удобен. Пропишите какую-нибудь команду, например, cmd – командная строка. Выбрав результат одновременен зажимаем комбинацию Ctrl+Shift+Enter. Простой способ не так ли?

Дополнительные свойства ярлыка

Допустим, вас интересует вопрос, как запустить командную строку от имени администратора. Значок уже расположен на рабочем столе в качестве быстрого доступа, но вы не желаете всё время запускать контекстное меню. Эту проблемку решить можно.

Заходим в свойства ярлыка (правая кнопка мышки и Свойства) и идём в раздел «Дополнительно».

Откроются дополнительные параметры. Там отметьте галочкой параметр «Запуск от имени администратора». Теперь при обычном запуске программы она всегда откроется с повышенными правами.

Программы для запуска от имени администратора

Существует следующие программы: RunAs, AdmiLink, ExecAS.

Инструмент RunAs

Он является частью Windows, поэтому им можно пользоваться. Чтобы её запустить достаточно открыть командную строку и ввести следующую команду:

runas /user:ИмяПКИмяПользователя msconfig.exe

Скорее всего появится просьба о вводе пароля. Обязательно вводим.

Дальше должно появится окошко конфигурации системы. Вместо указанной утилиты используйте cmd.exe или прочие утилиты.

Давайте создадим ярлык на рабочем столе. Нажимаем правой кнопкой мышки на пустой области и выбираем «Ярлык». В качестве расположения прописываем ту самую команду:

runas /user:ИмяПКИмяПользователя msconfig.exe

Даем название ярлыку и сохраняем.

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

При таком раскладе вы или люди, имеющие доступ к ПК, будут каждый раз вводить пароль. Этот момент решается добавлением в команду параметра /savecred, тогда команда будет такой:

runas /savecred /user:ИмяПКИмяПользователя msconfig.exe

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

Использование инструмента ExecAS

Запуск от имени администратора возможен программкой ExecAS. После запуска возникает окошко с предложением ввести информацию об учетной записи (логин и пароль), а еще имя программы и путь. После ввода данных жмём «Записать».

В окошке ExecAS появился наш подопытный кролик, Закройте программу и откройте заново. Сразу же откроется та программа, указанную нами в ExecAS. Чтобы добавить дополнительное приложение нужно в командной строке прописать ExecAS.exe /S. (При этом нужно находиться в каталоге с утилитой, к примеру, C:ExecAS).

Запустив ExecAS, добавляем еще какую-либо программку. Закрываем инструмент и опять запускаем. Появляется тоже самое окно. Но так нам не удобно, поэтому перейдем к созданию ярлыков:

Делаем два ярлыка с такими командами:

  • C:ExecASExecAS.exe 1
  • C:ExecASExecAS.exe 2

Числа 1 и 2 отвечают ща номер программы в ExecAS.

Запустив ярлыки, мы видим, что они открылись от имени администратора.

Использование утилиты AdmiLink

Указанная в заголовке утилита является консольной, и после инсталляции будет находиться в каталоге Windows.

Запускаем инструмент и видим вполне удобное окошко с русским интерфейсом, поэтому разобраться будет легко.

  • В первом поле вводим путь до файла, который хотим запускать;
  • Параметры командной строки во втором поле заполнять необязательно;
  • Третья строчка будет заполнена самостоятельно, если это не так, впишите С:windowssystem32
  • Режим отображение окна. В 4 строчке есть 2 параметра:
    • SHOW – стандартной запуск ПО с видимым окном;
    • HIDE – работа ПО в фоновом режиме;

Настраиваем параметры на вкладке Account:

  • В качестве имени домена пишем имя своего ПК, либо NetBios и test.lan;
  • Имя пользователя – можно выбрать, нажав на кнопку с тремя точками;
  • Пароль от учетной записи и подтвердить.
  • Введя все данные, нажмите кнопку «Тестировать».

Утилита проверит работоспособность указанной нами информации. Жмём любую клавишу в CMD.

После удачного теста нажмите кнопочку «Сгенерировать ключ запуска AdmiRun». Если этого не сделать, то ничего не будет работать.

  • Идём на вкладку «Link» и делаем следующее:
  • Имя ярлыка – называем любым именем;
  • Каталог – указываем, где будет расположен ярлык;
  • Картинка – выбираем изображение для ярлыка;
  • Жмём кнопку «Сгенерировать командную строку».
  • Теперь нажимаем большую кнопку «Создать Ярлык сейчас!».

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

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

Если зайти в свойства ярлыка и изменить программу в поле «Объект» на другую, то она попросту не запуститься. Это небольшая защита от вредоносов.

Планировщик заданий

Запустить программу от имени администратора, достаточно использованием инструмента «Планировщик заданий». Здесь есть один нюанс – если вы не админ, то воспользоваться им не удастся.

Введите в поиске всего два слова: «Планировщик заданий» и откройте результат. В окне справа выбираем пункт «Создать задачу».

Назовите её соответствующим именем, допустим, вы запускаете командную строку, тогда можно назвать CMD. Также ставим галку «Выполнить с наивысшими правами».

На вкладке «Действия» нажмите кнопочку «Создать».

Выберите действие (в нашем случае запуск программы). Нажмите «Обзор» и выберите запускаемую утилиту. Если вы запускаете командную строку, то путь будет таким: С:WindowsSystem32cmd.exe.Теперь нажимаем ОК.

На вкладе «Действия» появилась новая строчка. Отлично, можно нажать ОК.

Этап создания ярлыка

На рабочем столе делаем ярлык и указываем такую команду:

schtasks /run /tn имя_задачи_в_планировщике

имя_задачи_в_планировщике – это имя, которое вы дали в самом начале процесса создания задачи.

Ура, ярлык мы сделали, но это еще не всё. Перейдите в его свойства.

На вкладке «Ярлык» измените значок. Конечно, делать это вы не обязаны.

Дополнение к способу с планировщиком заданий

Для быстрого запуска множества программок, можно использовать утилиту Elevated Shortcut. Вы берёте ярлык или исполняемого файла и перетаскиваете на значок Elevated Shortcut.

Запуск программ из командной строки

Если открыть командную строку от имени администратора указанными выше способами, то запуск всех программ из CMD также позволит открывать их с повышенными правами.

Инструмент Elevate

Скачиваете эту утилиту отсюда и распаковываете. Дальше открываем командую строку и вводим такую команду:

Всё просто, не так ли? И командную строку можно обычным способом запускать, программа всё сделает сама.

Выводы

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

Еще мы рассмотрели программы, позволяющие запускать программы с повышенными правами без пароля. Хоть это и удобно, но вирус или человек сможет запросто использовать программу в нехороших целях. Также вирусы способны поменять объект ярлыка на сторонний вредоносный ресурс или на программный код, который будет паразитировать в Windows. В целом очень о многих методах мы узнали, а какой использовать решать только вам. Всем удачи!

Запуск от имени администратора c

Лучший отвечающий

Вопрос

Как в коде программы указать на запуск с правами администратора ?

Ответы

Добавьте в проект файл App.manifest (ПКМ по проекту — добавить — существующий элемент) и в блоке раскомментируйте следующую строчку:

DreamSpark Premium User

  • Изменено asdfxcbneftyherwe 28 августа 2012 г. 6:28
  • Предложено в качестве ответа LXGDARK Editor 28 августа 2012 г. 7:34
  • Отменено предложение в качестве ответа user6477 31 августа 2012 г. 7:02
  • Помечено в качестве ответа user6477 31 августа 2012 г. 7:02

  • Помечено в качестве ответа user6477 31 августа 2012 г. 7:03

Например так можно сделать вызов метода с требованием прав админа — Admin rights for a single method

  • Предложено в качестве ответа Brash_O 29 августа 2012 г. 13:31
  • Отменено предложение в качестве ответа user6477 31 августа 2012 г. 7:02
  • Помечено в качестве ответа user6477 31 августа 2012 г. 7:02

  • Изменено INFEL8 29 августа 2012 г. 10:00
  • Предложено в качестве ответа Алексей Лосев Editor 29 августа 2012 г. 10:08
  • Отменено предложение в качестве ответа user6477 31 августа 2012 г. 7:01
  • Помечено в качестве ответа user6477 31 августа 2012 г. 7:03

Все ответы

Добавьте в проект файл App.manifest (ПКМ по проекту — добавить — существующий элемент) и в блоке раскомментируйте следующую строчку:

DreamSpark Premium User

  • Изменено asdfxcbneftyherwe 28 августа 2012 г. 6:28
  • Предложено в качестве ответа LXGDARK Editor 28 августа 2012 г. 7:34
  • Отменено предложение в качестве ответа user6477 31 августа 2012 г. 7:02
  • Помечено в качестве ответа user6477 31 августа 2012 г. 7:02

  • Помечено в качестве ответа user6477 31 августа 2012 г. 7:03

Например так можно сделать вызов метода с требованием прав админа — Admin rights for a single method

  • Предложено в качестве ответа Brash_O 29 августа 2012 г. 13:31
  • Отменено предложение в качестве ответа user6477 31 августа 2012 г. 7:02
  • Помечено в качестве ответа user6477 31 августа 2012 г. 7:02

Правка манифеста ни к чему ни привела, хотя об этом способе также упоминается в большом количестве источников. Первоначально я шел именно этим путем.

Пытался делать как написано здесь На первый взгляд все, вроде бы, хорошо, при запуске появляется окно UAC, уже начал радоваться, НО оказалось: перестает работать отладка, другими словами, у меня на форме есть кнопарь, по клику должен выполнятся определенный код, так вот, это клик отладка уже не не видит: ставишь точку останова, но она не срабатывает, хотя форма открывается, кнопка отрабатывает. Похоже, это происходит по причине убивания процесса, который запускался в самом начале (см. ссылку выше) (т.е. того, который мониторил отладчик), то, что запускается потом — это уже новый процесс, который отладчик не контролирует.

Ссылка на основную публикацию
Adblock
detector