2012-11-12 71 views
5

Process.Start找不到現有文件

  • 我有可執行文件的路徑(C:\Test\n4.TestConsole.exe)。
  • File.Exists(path)返回true
  • File.OpenRead(path)讓我的小溪沒有問題。
  • Process.Start(path)拋出這個消息的System.ComponentModel.Win32Exception

    該系統找不到指定的文件。

我在做什麼錯?

的Windows 8專業版x64 - .NET框架4.5


編輯:下面是代碼。

public partial class Form1 : Form 
{ 
    public string Path { get; set; } 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     // I put a breakpoint here and verify the Path's value is 
     // C:\Test\n4.TestConsole.exe. 

     // File.Exists returns true. 
     MessageBox.Show(File.Exists(Path)); 

     // File.OpenRead doesn't throw an exception. 
     using (var stream = File.OpenRead(Path)) { } 

     // This throws the exception. 
     Process.Start(Path); 
    } 
} 
+0

什麼是您要執行的文件的類型?它是'可執行的'嗎?你能展示路徑的價值嗎? –

+0

@WouterdeKort:一個控制檯應用程序。當我雙擊它時,它會打開並等待輸入。路徑是:'C:\ Test \ n4.TestConsole.exe' –

+0

路徑的值是什麼?如果文件不在System32中,則需要使用完整文件路徑 –

回答

2

這可能是一個缺少的DLL或其他依賴項。當您通過Process.Start(exe_path)直接運行PATH環境變量並通過Process.Start("cmd", "/k " + exe_path)運行時,您可能想比較PATH環境變量。

1

試試這個:

private void button1_Click(object sender, EventArgs e) 
{ 
    ProcessStartInfo psi = new ProcessStartInfo(); 
    psi.WorkingDirectory = @"C:\Test"; 
    psi.FileName = "n4.TestConsole.exe"; 
    Process.Start(psi); 
} 
相關問題