CSharp之通过CMD调用第三方应用
调用控制台应用程序
1 | Process p = new Process(); |
C#调用exe和双击exe文件的区别
程序运行时,有个 WorkingDirectory 的概念。
你的FORM调用别的EXE时,如果EXE和你的FORM程序,不在一个目录,那么,那个EXE默认是认为你的目录是它的所在目录,这样的情况下,如果那个EXE有配置文件需要读取的话,就读取不到了。所以,在你调用那个EXE时,指定好那个EXE,WorkingDirectory为该EXE所在目录,即可解决问题。
要重定向 IO 流,Process 对象必须将 UseShellExecute 属性设置为 False。
第三方调用cmd 与 常规打开cmd 的区别
这就是因为当年的DOS现在已经不跟大家说导致的一些信息缺失导致的问题了。
首先我们说一个CMD窗口也就是一个command .com(dos)启动后他是有一些默认配置信息的:
path就是其中之一,如果不配置path那么所有的外部命令(command内置一些内部命令,除此之外的exe、com、bat等都是外部命令)都必须输入全部路径才能正确访问。
然后我们说说windows不论你运行还是开始菜单点击cmd,都是默认加载系统配置中的path的,配置位置见下图:
但是当你使用第三方程序启动的cmd,就不会加载这些默认信息了。
所以就这么简单,你要么在加载cmd的时候赋予path,要么使用绝对路径调用外部命令。
第三方调用CMD时赋予环境变量
1 | Environment.SetEnvironmentVariable("",""); |