2015-07-09 16 views
5

मैं एक स्ट्रिंग के रूप प्रक्रिया प्रतिक्रिया प्राप्त करने के लिए इसलिए मैं अपने कोड में विभिन्न जगह में उपयोग कर सकते हैं कोशिश कर रहा हूँ, यह समाधान है कि मैं अब तक है:"सिस्टम निर्दिष्ट फाइल नहीं ढूंढ सकता" प्रक्रिया पर त्रुटि। स्टार्ट();

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()); 
     } 

लेकिन जब मैं इस मैं चल रहा हूँ मिलती है:

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

कोड ठीक चलता है, लेकिन यह सिर्फ खुले कंसोल विंडो और सभी प्रक्रिया प्रतिक्रिया वहाँ Trow है तो मैं स्ट्रिंग के रूप में उपयोग नहीं कर सकते।

किसी को पता कारण है कि मैं इस त्रुटि या शायद मेरी समस्या के लिए एक अलग समाधान हो रही है?

उत्तर

12

मुझे लगता है समस्या यह है कि फ़ाइल नाम आप निर्दिष्ट कर रहे हैं अपने काम निर्देशिका के सापेक्ष है है, और जब प्रक्रिया शुरू करने से आप Process.Start उम्मीद कर रहे हैं वहाँ देखने के लिए - मैं नहीं मानता कि यह उस तरह से काम करता है जब UseShellExecutefalse है । यह पूरी तरह से संभव है कि casuing था -

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

ध्यान दें कि मैं भी स्ट्रिंग आप FileName संपत्ति के लिए बताए गए थे के अंत से अंतरिक्ष निकाल दिया है: बस प्रक्रिया के पूर्ण फ़ाइल नाम निर्दिष्ट करने आप शुरू करना चाहते का प्रयास करें समस्या भी है।

+0

यह काम किया! धन्यवाद ! –

+0

@DariaShalimov अगर यह आपके सवाल का जवाब इस सवाल का जवाब – Jamaxack

+0

के रूप में चिह्नित है, मैं ऐसा कर सकते हैं कैसे? –

4
System32 पहुँच के लिए

अगर आप 64 पर एक x86 अनुप्रयोग चलाने के लिए तो आप अपने फ़ाइल नाम में "System32" के बदले "Sysnative" कीवर्ड का उपयोग करना चाहिए कोशिश कर रहे हैं।

ईजी: के बजाय:

C: \ Windows \ System32 \ whoiscl.exe

यह होना चाहिए:

C: \ Windows \ Sysnative \ whoiscl। exe

उम्मीद है कि यह किसी को

में मदद करता है
संबंधित मुद्दे

 संबंधित मुद्दे