Главная > Без вредных советов, Программы > Повышение привилегий открытого окна командной строки

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

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

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

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

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

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

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

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

ELE

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

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

 

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

 

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

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"

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

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

 

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

 

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

ele в total commander

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

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

 

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

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

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

Их немного.

ele /?

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

ele /x

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

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

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

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

ele notepad.exe d:\text1.txt

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

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

Winreview.ru можно найти в Вконтакте, Facebook и Twitter. Присоединяйтесь!

Комментарии

  1. Vadim Sterkin

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

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

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

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

  2. Сергей Ткаченко

    Спасибо на добром слове

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

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

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

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

  3. Vadim Sterkin

    1. Можно доработать, наверное. Ведь родная фича работает так cmd.exe /s /k pushd "%V"

    2. Нет, не сомневаюсь. Но читатели могут не знать.

  4. Сергей Ткаченко

    1. Можно доработать ELE. Можно твик доработать, добавив в него cd

    cmd /c cd /d d\soft & ele /x

    В этом нет проблемы.

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

  5. Vadim Sterkin

    1. Лучше твик дорабатывать, по-моему.

    2. Гм... ссылка моя не для тебя, а для твоих читателей. Дополнительная инфа по теме, чего тут непонятного-то? )

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

  6. Сергей Ткаченко

    1. Доработаю

    2. Вот уж не думал, что произвел впечатление, что мне что-то непонятно. Отнюдь.

    >P.S. Да плевать на них. Я их не использую.

  7. Сергей Ткаченко

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

  8. ostap

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

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

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

  9. Сергей Ткаченко

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

  10. ЁжЫГ

    Сергей, в NirCMD не пробовал поюзать?

  11. ЁжЫГ

    без "в" -[

  12. Сергей Ткаченко

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

  13. Генри

    Уважаемый тс, у вас много интересных статей по командной строке windows (после нескольких месяцев работы в коммандной строке linux - мне тоже стало интересно).

    Но вот у меня возник к вам вопрос, как к профи. Быть может вам уже задавали его, но я не в курсе, а мне очень интересно Зачем использовать динозавр CMD когда есть Powеr Shell?

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

  14. Сергей Ткаченко

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

    Кроме того, в Висте, в которой мне приходится работать больше всего времени, Power Shell вообще не установлена.

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

  15. smkuzmin

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

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

  16. Alex Belt

    Увы, Ваш ele не работает с subst дисками (смонтированные с помощью subst.exe).

    Попробуйте модифицировать Вашу полезную программу, что бы она учитывала сей вариант.

  17. Сергей Ткаченко

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

  18. Denis

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

    Например подряд нужно вызвать два батника

    ele uninstall.bat

    ele install.bat

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

Написать комментарий