Повышение привилегий открытого окна командной строки

То, чего мне всегда не хватало в Windows Vista и во всех её потомках - возможности открыть командую строку с правами Администратора там, где мне нужно. Я из тех параноиков, что не отключают UAC, и мне чертовски досадно, когда очередная команда, которую я набрал в консоли, внезапно отказывается работать без повышения привилегий.

Windows не позволяет открыть окно команд там, где вам хочется, от имени администратора. Вместо этого вы должны открыть окно команд из меню Пуск, набрав в поиске cmd.exe и нажав [k]CTRL[/k]+[k]SHIFT[/k]+[k]Enter[/k]. Это быстро? Нет. Это удобно? Нет. Вам придется совершать дополнительные телодвижения, чтобы оказаться в той папке, которая вам нужна, потому как окно команд открывается в папке %windir%\system32.

Три месяца назад я решил изменить ситуацию. Нет, я не выключил Контроль учётных записей (я всегда считал подобные действия откровенной глупостью). Я открыл студию и написал с десяток строчек на до-диезе.

Проект  получил имя ELE. Восьмикилобайтный экзешник стал для меня панацеей в вопросе эскалации привилегий  командной строки.

Повышение привилегий открытого окна командной строки

Первая и основная задача, которую мне хотелось решить при помощи ELE - открытие окна cmd.exe из cmd.exe. Иными словами, я хотел открыть точно такое же окно, как то, которое было открыто сейчас, с тем же путём, и с историей команд.
К моему сожалению, эту задачку мне удалось решить лишь частично. Открыть окно команд от имени администратора в нужной папке - не проблема. Проблемой оказалось получение истории введенных пользователем команд. cmd.exe хранит их в своей памяти, они живут ровно сеанс работы окна команд, и как их считать из памяти, я не знаю.

Тем не менее, результатом я был доволен. Набрав в командной строке ele, я мгновенно получал запущенное с правами администратора окно команд, открытое в той же папке, что и предыдущее.

ELE

Открытие окна команд с правами администратора из файловых менеджеров

Особенность ELE - открывать окно команд с правами администратора в текущей папке - может сослужить вам добрую службу и сэкономить время и нервы, если интегрировать её в ваш любимый файловый менеджер. Я покажу вам это на примере Проводника, Total Commander и Far.

 

Открытие окна команд с правами администратора из Проводника

 

Достаточно интегрировать ELE  в контекстное меню папки и фона папки (пустого, свободного от файлов пространства окна Проводника), и вы откроете командую строку от имени администратора в любой локации жесткого диска.
Твик реестра мог бы выглядеть так:

[code]Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\ele\command]
@="ele.exe"

[HKEY_CLASSES_ROOT\LibraryFolder\background\shell]

[HKEY_CLASSES_ROOT\LibraryFolder\background\shell\ele]

[HKEY_CLASSES_ROOT\LibraryFolder\background\shell\ele\command]
@="ele.exe"

[HKEY_CLASSES_ROOT\Directory\shell\ele\command]
@="cmd /c cd /d \"%1\" & ele /x"[/code]

Ну и, соответственно,  результат:

В один клик мышью.

 

Открытие окна команд с правами администратора из Total Commander

 

Просто перетащите ele.exe на тулбар этого файлового менеджера, и отредактируйте полученную кнопку, удалив путь запуска. Это необходимо, чтобы при запуске ele в качестве рабочей папки использовался путь в активной панели Total Commander.

ele в total commander

Нажав на эту кнопку, вы откроете текущую папку в командной строке с правами администратора.

Открытие окна команд с правами администратора из Far

 

Один из способов сделать подобный трюк в этом популярном файловом менеджере  - добавить ELE в пользовательское меню. Для это надо нажать [k]F2[/k], и затем нажать [k]INS[/k]. В качестве команды следует ввести ele.exe.

Я повесил на ELE  хоткей E, таким образом, чтобы открыть окно командной строки от имени администратора в текущей папке, мне достаточно нажать [k]F2[/k] - [k]e[/k].

Ключи командной строки ELE

Их немного.

[code]ele /?[/code]

Краткая справка по использованию

[code]ele /x[/code]

При указании  опции /x ELE закрывает окно командной строки, из которого она была вызвана. Т.е. на экране остается только одно окно cmd.exe - то, что открыто с правами администратора.

Этот ключ появился по просьбе Вадима Стеркина, с которым я поделился идеей создания утилиты. Вадим проявил интерес к утилите и провёл активное её тестирование, в ходе которого и предложил добавить /x, дескать, бывает удобно что-то скопировать из "обычного" окна в высокопривигелированное. Скажу честно, у меня такой ситуации ни разу не было, и в своей повседневной деятельности я использую экзешник, который автоматически закрывает предыдущее окно, без дополнительных ключей. (Закрытие процесса-родителя, к слову, реализовано по аналогии с примером Саймона Мориера)

[code]ele программа [параметры][/code]

Запустить программу  от имени администратора. Например, Блокнот от имени администратора:

[code]ele notepad.exe d:\text1.txt[/code]


ELE - одна из немногих утилит, за создание которой мне не стыдно. Она действительно полезная, и способна сэкономить немного вашего времени и нервов.

Вы можете скачать ELE с моего Skydrive или с форума.

Повышение привилегий открытого окна командной строки: 18 комментариев

  1. Утилита, правда, полезная, я ей пользуюсь 🙂 Есть пара моментов касательно интеграции в контекстное меню (КМ).

    1. В твике ты используешь интеграцию в КМ фона папки, это надо подчеркнуть. Но надо бы еще добавлять и в КМ папки, ибо это ускоряет работу. Простейший пример — папка Scripts в области переходов. С другой стороны, не всегда удается сходу вызвать КМ фона папки, т.к. мешают находящиеся в ней объекты.

    2. Можно облагородить имя пункта КМ, задать значок и т.д. #/10640/#cm_options

    Идея с КМ библиотек понравилась — не пользовался, надо добавить себе 🙂

  2. Спасибо на добром слове
    1. В твике я использую неспроста фон папки. Объясняю.

    — У тебя на экране открыт диск C: и папка есть папка C:\Scripts.

    -Ты интегрировал ELE в контекстное меню папки. Щелкаешь по Scripts ПКМ и запускаешь ELE. У тебя откроется не Scripts, а C:, ибо утилита открывает текущую папку в командной строке, а текущая у тебя C:.

    2. Ты сомневаешься в том, что я знаю как облагородить контекстное меню? Я не ставил задачу написать в этой статье, как настроить контекстное меню Проводника, и твик приведен в качестве простейшего примера.

  3. 1. Можно доработать, наверное. Ведь родная фича работает так cmd.exe /s /k pushd «%V»
    2. Нет, не сомневаюсь. Но читатели могут не знать.

  4. 1. Можно доработать ELE. Можно твик доработать, добавив в него cd:
    [code]cmd /c cd /d d:\soft & ele /x[/code]
    В этом нет проблемы.

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

  5. 1. Лучше твик дорабатывать, по-моему.
    2. Гм… ссылка моя не для тебя, а для твоих читателей. Дополнительная инфа по теме, чего тут непонятного-то? 🙂

    P.S. И выключил бы ты эти дебильные смайлики 😉

  6. 1. Доработаю
    2. Вот уж не думал, что произвел впечатление, что мне что-то непонятно. Отнюдь.
    >P.S. Да плевать на них. Я их не использую.

  7. Твик доработал. Теперь все 3 читателя этого блога должны быть довольны.

  8. Утилита замечательная. Спасибо.

    Теперь все 3 читателя этого блога должны быть довольны.

    Ну это зря… Прекрасный сайт.

  9. @ostap , заметьте, вы в комментариях — третий. Я, по-моему, ничуть не ошибся.

    1. Пробовал. Даже юзаю. До перезапуска сайта тут была статья, как раз описывающая то, как я делал что-то подобное с использованием NirCMD. Я ничего не имею против этой утилиты, и подобную задачу можно решить и ей, написав специально обученный командный файл. Вот только предыдущее окно командной строки она закрыть не сможет.

  10. Уважаемый тс, у вас много интересных статей по командной строке windows (после нескольких месяцев работы в коммандной строке linux — мне тоже стало интересно).
    Но вот у меня возник к вам вопрос, как к профи. Быть может вам уже задавали его, но я не в курсе, а мне очень интересно: Зачем использовать динозавр CMD когда есть Powеr Shell?

    ps Надеюсь уведомление об ответе придет на email.

    1. Хм. Не знаю как и ответить. Я исторически работаю с CMD с тех времен, когда Power Shell ещё не было. К тому же с Power Shell к своему стыду я до сих пор не знаком. Вот и продолжаю пользоваться архаичной классикой.
      Кроме того, в Висте, в которой мне приходится работать больше всего времени, Power Shell вообще не установлена.
      Я ровным счётом не имею ничего против Power Shell, и его отсутствие в моем ассортименте инструментов — в первую очередь минус мне.

  11. Я ровным счётом не имею ничего против Power Shell, и его отсутствие в моем ассортименте инструментов — в первую очередь минус мне.

    Минус не Вам, а Майкрософту и разработчикам PowerShell — за «его отсутствие» долгое время, за его тормознутость, и излишнюю заумность. Брали бы пример с консольных утилит Unix….

  12. Увы, Ваш ele не работает с subst дисками (смонтированные с помощью subst.exe).
    Попробуйте модифицировать Вашу полезную программу, что бы она учитывала сей вариант.

    1. Я попробую, спасибо за наводку. Я не пробовал её использовать с subst дисками.

  13. Можно ли как то сделать ожидание завершения вызова ELE ?

    Например подряд нужно вызвать два батника:
    ele uninstall.bat
    ele install.bat

    и чтобы второй не запускался до завершения первого?

Обсуждение закрыто.