#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 ?