4

Предположим, что я (или любой работающий процесс) хотел запустить оболочку в Windows (7) и выполнить команду, есть несколько доступных опций. Например, можно:

  1. Откройте меню «Пуск», введите cmd и нажмите Enter ;
  2. Запустите командную строку через ярлык;
  3. Откройте командную строку в стороннем инструменте (например, Launchy) или;
  4. Выполните некоторые команды в средстве запуска Windows (Win+R), которое запускает приглашение, выполняет команду и затем возвращает

Все вышеперечисленные методы (по умолчанию) запускают cmd.exe (обычно находится в каталоге Windows\System32 ).

Недавно я начал отдавать предпочтение альтернативным оболочкам командной строки, таким как собственный PowerShell от Microsoft. Однако больше всего меня расстраивает использование этих инструментов, так как мне кажется, что я вынужден изо всех сил запускать команды через них по умолчанию.

Можно ли как-нибудь заменить поведение по умолчанию при запуске cmd.exe другой оболочкой, например PowerShell или Cygwin? В этой оболочке будут запускаться не только команды, которые я могу выполнить из меню «Пуск», либо из панели запуска, но если другие приложения захотят открыть оболочку, она откроется в указанной оболочке по умолчанию.

Чтобы было ясно, было бы неплохо, если бы был какой-то чистый способ приблизиться к этому (то есть параметр реестра или параметр конфигурации где-то, а не просто заменить исполняемый файл).

1 ответ1

6

0,1. Откройте меню «Пуск», введите cmd и нажмите Enter ;

Вместо этого powershell .

0,2. Запустите командную строку через ярлык;

Изменить цель ярлыка.

0,3. Откройте командную строку в стороннем инструменте (например, Launchy) или;

IIRC, Launchy просто использует ярлыки из меню Пуск. Некоторые другие инструменты жестко запрограммированы для запуска cmd.exe .

+0,4. Выполните некоторые команды в средстве запуска Windows (Win+R), которое запускает приглашение, выполняет команду и затем возвращает

"Выполнить" не открывает оболочку, cmd или любую другую, если вы специально не запросили ее, введя ее имя. Он запускает данную программу напрямую (AFAIK, используя ShellExcuteEx()).

Черное окно - Консоль Windows. Это не значит, что внутри запущен cmd.exe ; это может быть любая консольная программа. (Точно так же и с терминалами Unix; у них может быть запущена любая программа, не обязательно оболочка.)


Тем не менее, некоторые программы могут по-прежнему учитывать переменную среды %COMSPEC%.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .