代码之家  ›  专栏  ›  技术社区  ›  Ashley Grenon

无法用System.Diagnostics.Process.Start()启动程序

  •  4
  • Ashley Grenon  · 技术社区  · 16 年前

    什么应该是 这件事已经占用了我一个小时的时间&燃气轮机__&书信电报;

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

    Process.Start(@"MyExecutable.exe", "C:\\My Doc\\SomeDirectory\\MyXMLPath.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类启动程序时,为什么程序不接受我给它的路径?如果它在程序死掉时给我留个口信就好了(

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

    3 回复  |  直到 16 年前
        1
  •  4
  •   Jesse C. Slicer    16 年前

    问题可能是因为文件路径中有空格。如果你想一想你是如何做DOS调用的,你必须在路径两边加引号。但你打电话的方式不是。因此,请尝试在路径周围添加单引号。应该会处理好的。如果您从命令行的角度来考虑它,那么您需要这样做的原因就更有意义了。

    Process proc = new Process();
    proc.StartInfo.FileName = @"MyExecutable.exe";
    proc.StartInfo.Arguments = "\"C:\\My Docs\\SomeDirectory\\MyXMLPath.xml\"";
    proc.Start();
    
        2
  •  3
  •   Rob    16 年前

    参数包含空格:

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

    这意味着您正在执行的程序正在接收以下参数:

    • C:\My
    • Docs\SomeDirectory\MyXMLPath.xml

    你要做的就是把它包起来 双重的

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

    这意味着您正在执行的程序现在只接收一个参数:

    • "C:\My Docs\SomeDirectory\MyXMLPath.xml"
        3
  •  1
  •   slugster Joey Cai    16 年前

    你应该为这个项目安排一个处理程序 Exited

            Process p = new Process();
            p.Exited += new EventHandler(MyProcess_Exited);
    

    ExitCode 处理程序内部:

        private void MyProcess_Exited(object sender, EventArgs e)
        {
            Process p = sender as Process;
    
            if (p.ExitCode == someValue)......
        }
    

    在没有任何其他信息的情况下,我认为启动进程的权限不足以读取或访问xml文件。