2010-04-14 31 views
6
UnhandledException: System.ComponentModel.Win32Exception: No application is associated with the specified file for this operation 
    at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) 
    at System.Diagnostics.Process.Start() 
    at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) 
    at System.Diagnostics.Process.Start(String fileName) 

हाय हर किसी के साथ जुड़ा हुआ है,कोई आवेदन निर्दिष्ट फ़ाइल अपवाद

मैं एक मशीन मैं परीक्षण कर रहा हूँ पर निम्न अपवाद हो रही है जब Process.Start का उपयोग करने के .csv फ़ाइल को खोलने की कोशिश कर रहा पर। मुझे लगता है कि यह हो रहा है क्योंकि इस बॉक्स पर .csv फ़ाइलों के लिए कोई फ़ाइल एसोसिएशन सेट नहीं किया गया है।

तो आप इस स्थिति से कैसे बचेंगे?

प्रक्रिया को मजबूर करें। नोटपैड में खोलने के लिए प्रारंभ करें? - आदर्श रूप में इसे एक्सेल में खोला जाना चाहिए, लेकिन अगर आप उस कंप्यूटर पर एक्सेल नहीं करते हैं तो आप क्या करते हैं?

धन्यवाद

उत्तर

4

यदि आपका एप्लिकेशन Excel पर ठीक से और प्रभावी ढंग से काम करने के लिए स्थापित किया गया है, तो इसके बारे में उपयोगकर्ता को बग करें। अपवाद को पकड़ें, और समस्या के बारे में बताने के लिए अधिसूचना पॉप अप करें, लेकिन फिर उस अधिसूचना में उन्हें वैकल्पिक संपादक जैसे नोटपैड में खोलने का विकल्प दें।

यह सब अच्छा यूएक्स तक उबाल जाता है - उपयोगकर्ता को बताएं, लेकिन इसे इस तरह से करें कि आप अपने रास्ते में आने और रोकने जैसी जगहों को रोकने के बजाय विकल्पों को पेश करके उन्हें सशक्त बना रहे हैं, ।

संपादित करें: ठीक वही करें जो आप कर रहे हैं - मान लें कि उनके पास एक्सेल है, उनके पास ओपनऑफिस जैसे कुछ अन्य दर्शक/संपादक हो सकते हैं। जो कुछ भी सीएसवी में पंजीकृत है, इसे करने की बात करें। फ़ाइल एसोसिएशन को स्वयं जाने और जांचने की कोशिश न करें, रजिस्ट्री में चारों ओर घूमने के लिए आपके ऐप में पर्याप्त विशेषाधिकार नहीं हो सकते हैं (शायद नहीं)।

आपको अपवादों के लिए अन्य स्पष्ट कारणों की जांच करने की भी आवश्यकता है, जैसे उपयोगकर्ता को लक्ष्य फ़ाइल खोलने का अधिकार नहीं है, यह फ़ोल्डर या फ़ाइल पर ही प्रतिबंधों के कारण हो सकता है। शायद फ़ाइल लॉक है क्योंकि यह अभी भी एक और प्रक्रिया में खुला है। आपकी प्रक्रिया क्यों है। स्टार्ट विफल हो सकता है।

अपवाद को पकड़ें, और यदि कारण फ़ाइल से जुड़े कोई एप्लिकेशन नहीं है तो उन्हें विकल्प प्रदान करें। यदि उपयोगकर्ता नोटपैड का उपयोग करना चुनता है, तो नोटपैड में फ़ाइल को खोलें और खोलें, लेकिन फिर भी अपवादों के लिए देखें। नोटपैड एक अच्छा विकल्प है, इसमें फ़ाइल पर लॉक नहीं है, लेकिन यह अभी भी फ़ोल्डर/फ़ाइल एसीएल के अधीन है।

+0

यह इस पर निर्भर नहीं है - लेकिन उपयोगकर्ता के लिए एक सीएसवी फ़ाइल पढ़ने के लिए यह बहुत आसान है। एक्सेल स्थापित होने पर मैं कैसे जांच सकता हूं? – baron

+0

मेरा संपादन देखें .... – slugster

+0

आपकी प्रतिक्रिया सही मायने रखती है। चियर्स – baron

2

रजिस्ट्री पढ़ें अगर वहाँ फाइल एक्सटेंशन के साथ जुड़े इससे पहले कि आप process.start कर एक कार्यक्रम है देखने के लिए। HKEY_CLASSES_ROOT\.csv में यह देखने के लिए कि फ़ाइल एक्सटेंशन को संभालने के लिए कौन पंजीकृत है, यदि कोई है तो देखें।

+0

और क्या करता है, तो कुछ भी नहीं जुड़ा हुआ है? नोटपैड में खुले बल (आईडी कहते हैं कि अधिकांश एक्सपी बक्से यह मानने के लिए काफी सुरक्षित हैं) और यदि एसोसिएशन है - संबंधित ऐप के साथ खुला है? उम्मीद है कि आप रजिस्ट्री से प्रक्रिया का नाम आसानी से पर्याप्त प्राप्त कर सकते हैं? ... – baron

+0

यदि फ़ाइल प्रकार को संभालने के लिए कुछ भी जुड़ा हुआ नहीं है, तो आप इसके साथ क्या करते हैं - नोटपैड ठीक विकल्प हो सकता है। यदि रजिस्ट्री में आपकी चोटी इंगित करती है कि फ़ाइल प्रकार को संभालने के लिए कुछ पंजीकृत है, तो मैं प्रक्रिया को दूंगा। रजिस्ट्री को वास्तव में रजिस्ट्री को समझने के विवरण को प्रबंधित करें क्रियाएँ और क्या नहीं। – dthorpe

3

आप ProcessStartInfo.ErrorDialog = true सेट करते हैं, तो उपयोगकर्ता एक मानक खिड़कियों संवाद के साथ शीघ्र हो जाएगा: देखने here