c# - सी#कोड प्रोग्राम लॉन्च नहीं करेगा। Win32Exception नापसंद था




process (3)

मैं एक प्रोग्राम बना रहा हूँ जो एक बटन को क्लिक करते समय एक प्रोग्राम लॉन्च करता है। ऐसा लगता है कि क्रोम या वर्ड जैसे कार्यक्रमों के लिए काम करना है, लेकिन छोटे प्रोग्राम नहीं हैं जैसे कि फ्रेप्स और मुझे त्रुटि देता है

'System.ComponentModel.Win32Exception' प्रकार का एक अप्रबंधित अपवाद सिस्टम.dll में हुआ अतिरिक्त जानकारी: सिस्टम निर्दिष्ट फ़ाइल नहीं ढूँढ पा रहा है

private void Fraps_Click(object sender, EventArgs e)
{
    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.FileName = "fraps.exe";
    Process.Start(startInfo);
}

आईएमएचओ, आप किसी ऐसे प्रोग्राम को कॉल कर सकते हैं जिसमें पर्यावरण में पथ प्रविष्टि है। यहां, हमें यकीन नहीं है कि एक्स्ट्यूशन निष्पादन आवेदन की बिन निर्देशिका में मौजूद है। क्या आप पूर्ण पथ से कोशिश कर सकते थे, आपको अपवाद नहीं मिला होता

मैं सुझाव देता हूं कि आप अपने ऐप के हिस्से के रूप में एक्सईट को बूटस्ट्रैप कर सकते हैं, क्योंकि इसकी खिड़की का कोई हिस्सा नहीं है या आप यह सुनिश्चित करने के लिए उपयोगकर्ता को संकेत दे सकते हैं कि पथ पर्यावरण चर में है


विंडोज नहीं जानता कि "fraps.exe" क्या है, और इसे फ़ोल्डर्स में ऐसी निष्पादन योग्य फ़ाइल नहीं मिल सकती है, जिसमें इसे खोजने के लिए कहा गया है

चलो यह सत्यापित करें। एक कमांड प्रॉम्प्ट खोलें और "fraps.exe" टाइप करें यह कोई फर्क नहीं पड़ता, जहां आपकी वर्तमान निर्देशिका है; घर फ़ोल्डर को अच्छी तरह से करना चाहिए

जब तक आप अपने घर फ़ोल्डर में फ्रेप्स को स्थापित नहीं करते हैं, तब तक यह आपको देखना चाहिए। अब, यह "क्रोम। एक्सई" (संभवत: मेरे सिस्टम पर मामला नहीं) के लिए क्यों काम करेगा, लेकिन फ्रेप्स नहीं?

पर्दे के पीछे, विंडोज को जब आप कमांड टाइप करते हैं तो कई फ़ोल्डरों को देखने के लिए कहा जाता है यदि आप संकेत में SET टाइप करते हैं तो आप पूरी सूची देख सकते हैं, और PATH खोज कर सकते हैं।

यह एक गड़बड़ का एक सा है, लेकिन यह वह जगह है जहां विंडोज़ आप वर्तमान निर्देशिका में देखने के बाद प्रोग्राम की तलाश कर रहे हैं।

इस स्थिति में, विंडोज वर्तमान निर्देशिका (आपके bin\Debug फ़ोल्डर) में "फ्रेप्स। एक्सई" या पाथ में मौजूद किसी फ़ोल्डर में नहीं मिल सकता है। इसलिए यह अपने हाथों को फेंकता है और कहता है The system cannot find the file specified

आपके पास यह तय करने के दो विकल्प हैं:

एक: पूर्ण पथ नाम का उपयोग करें यदि आप जानते हैं कि फ्रेप्स कहाँ स्थापित है, तो आप इसके बजाय निष्पादन योग्य का पूरा पथ नाम का उपयोग कर सकते हैं, जैसे:

startInfo.FileName = @"c:\Program Files\Fraps\fraps.exe";

दो: फ़ैप्स इंस्टॉल फ़ोल्डर को पाथ वातावरण चर में जोड़ें यह अधिक जटिल और जटिल है, लेकिन आप पाथ चर में स्थापित होने वाले पथ को अधिक या कम जोड़ते हैं। आप या तो ऐसा कर सकते हैं, या ऐसा करने के लिए अंतिम उपयोगकर्ता पर भरोसा कर सकते हैं (हालांकि यह मेरे लिए एक अच्छा विचार की तरह नहीं लगता है)।

दोनों विकल्पों के लिए आवश्यक है कि आप जानते हैं कि फ्रेप्स को किस स्थान पर स्थापित किया गया है, इसलिए मूल्य को हार्डकोड (अगर यह प्रोग्राम केवल आपके लिए है) के लिए एक अच्छा विचार है या प्रोग्राम को इंस्टॉल / इंस्टॉल करते समय स्थापित पथ के लिए उपयोगकर्ता से पूछें।


यदि आप जो कॉल करेंगे तो 32 बिट है, तो आपका कोड 32 बिट होना चाहिए। AnyCpu या 64 बिट वह त्रुटि देता है





process