c# - 使用 System.Diagnostics.Process.Start() 启动程序时遇到问题

标签 c# .net

本来应该是一件琐碎的事情,现在却占用了我一个小时的时间! >__<

我想以 xml 路径作为参数启动一个可执行文件。 (我已将此程序所在的目录添加到我的系统路径中。)看起来很简单。我的第一种方法是使用静态 Process.Start() 方法:

Process.Start(@"MyExecutable.exe", "C:\\My Doc\\SomeDirectory\\MyXMLPath.xml");

进程确实开始了,但大约半秒后它就死了。所以,我想 ooookaay,也许可执行文件不喜欢我给它的参数?为了好玩,我创建了一个可执行文件的快捷方式,并将 xml 文件路径添加为它的参数之一。程序启动并按预期运行。不确定为什么会这样,我决定也在命令行上试试运气:

C:\MyExecutable.exe "C:\My Docs\SomeDirectory\MyXMLPath.xml"

这样开始也没问题。

现在,此时我开始捕获救命稻草,并决定创建 Process 类的一个实例:

Process proc = new Process();
proc.StartInfo.FileName = @"MyExecutable.exe";
proc.StartInfo.Arguments = "C:\\My Docs\\SomeDirectory\\MyXMLPath.xml";
proc.Start();

不用说,这根本没有帮助。 >.<

很沮丧,我决定试试运气,注释掉一行:

//proc.StartInfo.Arguments = "C:\\My Docs\\SomeDirectory\\MyXMLPath.xml";

过程开始了。没有必要的论据,但它开始了。所以,问题是,当我尝试通过 Process 类启动它时,为什么程序不接受我给它的路径?如果它在程序死机时给我留言就好了。 :(

有什么想法吗?非常感激!

最佳答案

问题可能是因为文件路径中的空格。如果考虑如何进行 DOS 调用,则必须在路径周围加上引号。但是你调用你的方式不是。所以尝试在路径周围添加单引号。那应该照顾它。如果您从将其呈现为命令行的角度来考虑它,那么您需要这样做的原因就更有意义了。

Process proc = new Process();
proc.StartInfo.FileName = @"MyExecutable.exe";
proc.StartInfo.Arguments = "\"C:\\My Docs\\SomeDirectory\\MyXMLPath.xml\"";
proc.Start();

关于c# - 使用 System.Diagnostics.Process.Start() 启动程序时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3462991/

相关文章:

c# - 对于 float 和 double,为什么它对于负数和正数是不对称的?

ASP.net vnext 依赖注入(inject)

c# - EF6 和分层架构

c# - 剑道网格 : filtering on an array object

c# - Entity Framework - 子类相关对象的预加载

c# - 如何确定DataRow中列的值的类型?

.net - 为什么 String.Format 是静态的?

c# - appname.exe.config 未在 Windows 应用程序上创建

C# 将字符串放入文本框

控制 AutoCAD 相机的 C# 代码