Запуск командной строки из контекстного меню проводника
По умолчанию рабочей директорией командной строки является либо системная директория C:\Windows\system32, либо директория пользователя C:\Users\user_name. Это очень неудобно, когда надо, чтобы рабочей директорией была совершенно другая директория, например папка находящаяся на рабочем столе или вообще на другом диске.
Конечно можно, используя команды термила, пройти в любую директорию, но это порой трудоёмкий процесс, т. к. нужно придерживаться синтаксиса, учитывать пробелы в имени директорий и т. п..
На много удобней было бы иметь в контекстном меню директории пункт запуска терминала, где рабочей директорией будет выбранная директория, а так же, чтобы можно было запустить терминал ни только с правами текущего пользователя, но и с правами администратора.
Реализацию такой "хотелки" мы сможем сделать с помощью редактора реестра. Итак приступим.
Открываем редактор реестра. Это можно сделать запустив команду "Выполнить" Win + R и прописать команду regedit.
В редакторе реестра раскроем раздел HKEY_CLASSES_ROOT\Directory. Именно с этим разделом и будем шаманить, так как именно он отвечает практически за всё, что связано с директориями.
Откроем раздел HKEY_CLASSES_ROOT\Directory\Background\shell и создадим в нём раздел user_cmd. В разделе HKEY_CLASSES_ROOT\Directory\Background\shell\user_cmd создадим строковой параметр MUIVerb и присвоем ему значение Командная строка.
Пункт мы создали. В этом можно убедиться, если кликнуть на пустом месте внутри директории:
Но этого мало и мы продолжаем.
Если вы помните, то нам нужна возможность запуска терминала с правами текущего пользователя и с правами администратора. Значит для этого нужно сделать вложенное меню для только что созданного пункта. Можно, конечно, сделать пункты подряд, но тогда мы увеличим размер контекстного меню, а на этом хочется сэкономить. Да и полезно узнать, как сделать вложенные пункты.
Для этого в разделе HKEY_CLASSES_ROOT\Directory\Background\shell\user_cmd создадим строковой параметр SubCommands. Значение присваивать не будем.
В разделе HKEY_CLASSES_ROOT\Directory\Background\shell\user_cmd создадим раздел shell и, в только что созданном разделе, создадим раздел default_user, проходим в него HKEY_CLASSES_ROOT\Directory\Background\shell\user_cmd\shell\default_user.
В этом разделе создадим строковой параметр MUIVerb и присвоем ему значение Запуск CMD Пользователь.
В разделе HKEY_CLASSES_ROOT\Directory\Background\shell\user_cmd\shell\default_user создадим раздел command.
В этом разделе пропишем для параметра По умолчанию значение, которое будет являться командой для запуска Командной строки для данной директории: cmd.exe /s /k pushd "%V" && title %V && echo off && cls
Впринципе вы можете запустить окно Коммандной строки с правами текущего пользователя и выполнив в нём команду DIR, чтобы посмотреть информацию о каталоге:
Разберём только что прописанную команду, чтобы вы поняли, что она делает.
Собственно сам запуск Командной строки - cmd.exe. А вот далее идут определённые команды.
Ключи /s /k - заданы для того, чтобы терминал не закрылся после выполнения последующих команд.pushd "%V" - команда pushd устанавливает рабочий каталог и переходит в него. Рабочим каталогом является "%V" - это переменная, которая содержит путь каталога. Его мы и устанавливаем.
А дальше чистый тюнинг.
title %V - установим в заголовок окна путь каталога, чтобы мы знали, где запущен терминал.echo off - выключаем режим отображения вводимых команд на экран.cls - очищаем экран.
Знаки && являются объеденением команд с ожиданием выполнения каждой в той последовательности, в которой они записаны.
Итак, мы создали пункт в контекстном меню для запуска терминала с правами текущего пользователя. Теперь перейдём ко второму этапу - создания второго пункта меню запуска терминала с правами Администратора.
Создаём раздел runas в разделе HKEY_CLASSES_ROOT\Directory\Background\shell\user_cmd\shell.
Переходим в данный раздел HKEY_CLASSES_ROOT\Directory\Background\shell\user_cmd\shell\runas и создаём строковой параметр MUIVerb и присвоем ему значение Запуск CMD Администратор.
Далее в разделе HKEY_CLASSES_ROOT\Directory\Background\shell\user_cmd\shell\runas создаём раздел command. В данном разделе HKEY_CLASSES_ROOT\Directory\Background\shell\user_cmd\shell\runas\command для параметра По умолчанию пропишем значение - cmd.exe /s /k pushd "%V" && title %V && echo off && cls.
Вот и создали пункт меню для запуска терминала с правами Администратора
Мы создали пункты меню только для случая, если вы вызвали контекстное меню на свободном месте внутри директории. Если попробовать вызвать контекстное меню на выбранной папке - пунктов не будет. Вот этот нам нужно будет реализовать во второй части.
Все действия практически индентичны, только они происходят уже в разделе HKEY_CLASSES_ROOT\Directory\shell.
Для того, чтобы не проделывать всё это вручную, я сделал экспорт реестра для добавления данных пунктов в контекстное меню. К пунктам меню добавлена иконка cmd.
Вы можете скопировать код, вставить в блокноте и сохранить его с расширением .reg или скачать уже готовый файл твика.
Вам останется только распаковать архив и запустить tweak_cmd_directory.reg согласившись на слияние.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\user_cmd]
"Icon"="cmd.exe,0"
"SubCommands"=""
"MUIVerb"="Командная строка"
[HKEY_CLASSES_ROOT\Directory\Background\shell\user_cmd\shell\default_user]
@=""
"Icon"="cmd.exe,0"
"MUIVerb"="Запуск CMD Пользователь"
[HKEY_CLASSES_ROOT\Directory\Background\shell\user_cmd\shell\default_user\command]
@="cmd.exe /s /k pushd \"%V\" && title %V && echo off && cls"
[HKEY_CLASSES_ROOT\Directory\Background\shell\user_cmd\shell\runas]
"Icon"="cmd.exe,0"
"MUIVerb"="Запуск CMD Администратор"
[HKEY_CLASSES_ROOT\Directory\Background\shell\user_cmd\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\" && title %V && echo off && cls"
[HKEY_CLASSES_ROOT\Directory\shell\user_cmd]
"Icon"="cmd.exe,0"
"SubCommands"=""
"MUIVerb"="Командная строка"
[HKEY_CLASSES_ROOT\Directory\shell\user_cmd\shell\default_user]
@=""
"Icon"="cmd.exe,0"
"MUIVerb"="Запуск CMD Пользователь"
[HKEY_CLASSES_ROOT\Directory\shell\user_cmd\shell\default_user\command]
@="cmd.exe /s /k pushd \"%V\" && title %V && echo off && cls"
[HKEY_CLASSES_ROOT\Directory\shell\user_cmd\shell\runas]
"Icon"="cmd.exe,0"
"MUIVerb"="Запуск CMD Администратор"
[HKEY_CLASSES_ROOT\Directory\shell\user_cmd\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\" && title %V && echo off && cls"












