2015-07-09 38 views
5

tôi đang cố gắng để có được quá trình phản ứng như là một chuỗi để tôi có thể sử dụng nó ở vị trí khác nhau trong mã của tôi, đây là giải pháp mà tôi có cho đến nay:"Hệ thống không thể tìm thấy tệp được chỉ định" lỗi trên process.Start();

const string ex1 = @"C:\Projects\MyProgram.exe "; 
     const string ex2 = @"C:\Projects\ProgramXmlConfig.xml"; 


     Process process = new Process(); 
     process.StartInfo.WorkingDirectory = @"C:\Projects"; 
     process.StartInfo.FileName = "MyProgram.exe "; 
     process.StartInfo.Arguments = ex2; 
     process.StartInfo.Password = new System.Security.SecureString(); 
     process.StartInfo.UseShellExecute = false; 
     process.StartInfo.RedirectStandardOutput = true; 

     try 
     { 
      process.Start(); 
      StreamReader reader = process.StandardOutput; 
      string output = reader.ReadToEnd(); 
     } 
     catch (Exception exception) 
     { 
      AddComment(exception.ToString()); 
     } 

Nhưng khi tôi đang chạy tôi này nhận được:

"The system cannot find the file specified" error in process.Start(); without 
     process.StartInfo.UseShellExecute = false; 
     process.StartInfo.RedirectStandardOutput = true; 

mã này chạy tốt nhưng nó chỉ mở giao diện điều khiển cửa sổ và tất cả các phản ứng quá trình là niềm tin đó vì vậy tôi không thể sử dụng nó như là chuỗi.

Có ai biết tại sao tôi gặp phải lỗi này hoặc có thể là một giải pháp khác cho vấn đề của tôi?

Trả lời

12

Tôi nghi ngờ vấn đề là tên tệp bạn chỉ định có liên quan đến thư mục làm việc của bạn và bạn đang mong đợi Process.Start để xem ở đó khi bắt đầu quá trình - Tôi không tin nó hoạt động theo cách đó khi UseShellExecutefalse . Hãy thử chỉ cần xác định tên tập tin tuyệt đối của quá trình bạn muốn bắt đầu:

process.StartInfo.FileName = @"C:\Projects\MyProgram.exe"; 

Lưu ý rằng tôi cũng đã gỡ bỏ không gian từ ngày kết thúc của chuỗi bạn đã gán cho FileName sở hữu - đó là hoàn toàn có thể được casuing vấn đề quá.

+0

Nó hoạt động! cảm ơn ! –

+0

@DariaShalimov nếu đây là câu trả lời cho câu hỏi của bạn, hãy đánh dấu là câu trả lời – Jamaxack

+0

Tôi có thể làm như thế nào? –

4

Để truy cập System32 nếu bạn đang cố gắng chạy ứng dụng x86 trên x64 thì bạn phải sử dụng từ khóa "Sysnative" thay vì "System32" trong tên tệp của bạn.

EG: thay vì:

C: \ Windows \ System32 \ whoiscl.exe

Nó nên là:

C: \ Windows \ Sysnative \ whoiscl. exe

Hy vọng điều này sẽ giúp ai đó

Các vấn đề liên quan