Запуск проводника Windows под администратором

Запуск проводника Windows от имени администратора может возникнуть в такой ситуации: пользователь запустил установочное приложение для игры от имени администратора, после благополучной установки игры, нам надо скопировать в папку с игрой, как правило, это папка  Program Files, кряк и заменить им файл-приложение. Под ограниченной учетной записью это не получится, тут есть несколько выходов из ситуации: или запустить файловый менеджер (например, Total Commander) под администратором, или, собственно, запуск проводника Windows. Первый способ вполне прост, а вот со вторым может возникнуть трудность, так как запуск проводника Windows методом: правый клик по значку explorer.exe в паке Windows и выбор пункта Запуск от имени… ни к чему не приведет. Вся разгадка заключается в том, что попытка запуска проводника Windows не приводит к появлению нового экземпляра, или потока, процесса explorer.exe. Для решения поставленной задачи надо обратиться к командной строке и утилиты runas и start.

Давайте посмотрим на передаваемые этим утилитам параметры:

Запуск проводника Windows

start /?
START ["заголовок"] [/Dпуть] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME| /ABOVENORMAL | /BELOWNORMAL] [/WAIT] [/B] [команда/программа] [параметры]

«заголовок» – тут заголовок название приложения, которое мы хотим запустить
Путь – указываем рабочий каталог.
B — Выполнение программы без создания нового окна, происходит отключение обработки сочетания клавиш ^C. Если программа не производит обработки сочетания клавиш ^C самостоятельно, то единственный способ его прервать является использование сочетания клавиш ^Break.
I — Новой средой станет исходная среда, переданная cmd.exe, а не текущая среда.
MIN – Возможность зaпуcкa команды/прoгрaммы в свернутом виде.
MAX – Возможность зaпуcкa команды/прoгрaммы в развернутом виде.
SEPARATE – Происходит зaпуcк 16-разрядной прoгрaммы Windows в отдельной области памяти, фактически в отдельном потоке.
SHARED — Происходит зaпуcк 16-разрядной прoгрaммы Windows в общей области памяти.
LOW — Зaпуcк с приоритетом IDLE.
NORMAL — Приоритет NORMAL.
HIGH — Приоритет HIGH.
REALTIME — Приоритет REALTIME.
WAIT – С ожиданием завершения приложения.
ABOVENORMAL — С классом приоритета ABOVENORMAL
BELOWNORMAL — С классом приоритета BELOWNORMAL команда/прoгрaмма

Запуск проводника Windows

runas /?
RUNAS [ [/noprofile | /profile] [/env] [/netonly] ] /user:<имя пользователя> <программа>
RUNAS [ [/noprofile | /profile] [/env] [/netonly] ] /smartcard [/user:<имя пользователя>] <программа>

/noprofile —  Позволяет не производить загрузки пользовательского профиля. Такой ход позволяет ускорить загрузку, однако, это может привести к неправильной работе некоторых приложений.
/profile – Данный параметр загружает пользовательский профиль, араметр установлен о умолчанию.
/env – Используются текущие параметры среды.
/netonly — Учетные данные предназначены только для удаленного доступа.
/savecred – Используются учетные данные, которые сохранены пользователем. Стоит учитывать, что данный параметр не доступен в Windows XP Home Edition и будет проигнорирован.
/smartcard – Используется, ели нужно указать учетные данные ри использовании смарт-карт.
/user <имя пользователя> должно быть в виде USER@DOMAIN или DOMAIN\USER
<программа> — Командная строка для EXE. См. примеры ниже.

Например:

runas /profile /user:mymachine\administrator cmd
runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
runas /env /user:user@domain.microsoft.com "notepad \"Data.txt\""

Для начала мы попробуем запустить проводник Windows используя лишь утилиту runas.exe, она собственно и предоставляет возможность выполнения приложения от имени заданной учетной записи, ну что ж, попробуем:

runas /user:Admin еxplorеr.exe
Введите пароль для Admin:
Попытка запуска еxplоrеr.еxе от имени пользователя "COMP\ Admin" ...

К сожалению, ничего не произошло, это не удивительно, так как утилита runas.exe не позволяет создать отдельный поток (экземпляр). Теперь попробуем произвести запуск проводника Windows использовать параметр SEPARATE утилиты start.exe, она то и позволит запустить Windows проводника под администратором в отдельном потоке, пробуем:

runas /?
RUNAS [ [/noprofile | /profile] [/env] [/netonly] ] /user:<имя пользователя> <программа>
RUNAS [ [/noprofile | /profile] [/env] [/netonly] ] /smartcard [/user:<имя пользователя>] <программа>

Теперь у нас все получилось, запуск проводника Windows под нужной учетной записью удался, в подтверждение мы видим появление нового окна проводника, в добавок в окне диспетчера задач мы видим два процесса explorer.exe, причем они работают под разными учетными записями.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий