Есть ли способ интерпретировать команду без запуска cmd.exe ?

#shell #cmd #windows-shell

#оболочка #cmd #windows-оболочка

Вопрос:

Я ищу способ запустить исполняемый файл или скрипт без получения cmd.exe чтобы сделать это за меня. В настоящее время я запускаю процесс, используя cmd.exe /C <command> , который мне нужен для выполнения следующих действий:

  • Найдите исполняемый файл в текущем каталоге и по ПУТИ
  • Интерпретируйте PATHEXT, чтобы разрешить скриптовые команды без расширения
  • Интерпретируйте ассоциации файлов, чтобы, например, запускать интерпретатор python, когда я скажу ему запустить blah.py .

Мне не нужно иметь возможность запускать какие-либо из «встроенных» команд, таких как «dir».

Можно ли избежать использования cmd.exe без существенной повторной реализации всей вышеупомянутой функциональности? Должен быть какой-то shell API для выполнения вышеуказанных действий, верно?

Ответ №1:

ShellExecute должен делать именно то, что вы хотите — вы можете использовать его для запуска исполняемого файла (который затем открывается стандартным приложением),

http://msdn.microsoft.com/en-us/library/bb762153(v=vs.85).aspx

Комментарии:

1. На первый взгляд, кажется, что она не разрешает PATH или PATHEXT — это так, или она действительно это делает?

2. Это так (что может представлять угрозу безопасности), см. buildsecurityin.us-cert.gov/bsi/articles/knowledge/coding /…

Ответ №2:

Взгляните на систему.Диагностика.Процесс.Start( AppName, аргументы) .http://msdn.microsoft.com/en-us/library/system.diagnostics.process.start.aspx а что касается оболочки, вы ее смотрели: http://msdn.microsoft.com/en-us/library/bb773177 (v = против 85).aspx ?