जब सी # में एक फ़ोल्डर का नाम बदलने, System.IO.Directory.Move
फेंकता System.IO.IOException
(संदेश "पहुँच अस्वीकृत") यदि उस फ़ोल्डर या किसी सबफ़ोल्डर वर्तमान में एक (विंडोज 7) अन्वेषक द्वारा खोला जाता है खिड़की। कमांडलाइन RENAME
का उपयोग करना भी विफल रहता है। दूसरी एक्सप्लोरर विंडो का उपयोग करना सफल होता है।C# जो वर्तमान में Windows Explorer द्वारा खोला जाता है में एक फ़ोल्डर का नाम बदलने के लिए
त्रुटि फ़ोल्डर (या उसके माता-पिता) को ध्वस्त करने के बाद भी त्रुटि बनी रहती है। वास्तव में विशेष एक्सप्लोरर विंडो बंद होने की जरूरत है। तो एक्सप्लोरर फ़ोल्डर संरचना को दिखाने के लिए कुछ ताले बनाने लगता है और वास्तविक फ़ोल्डर अब प्रदर्शित नहीं होने पर भी उन्हें जारी नहीं करता है (जो शुद्ध नॉनेंस आईएमओ है)।
क्या किसी फ़ोल्डर का नाम बदलने के लिए कोई तरीका है (प्रोग्राम में उदा। सी # का उपयोग करना), जो वर्तमान में प्रदर्शित होता है (या दिखाई देता है, उपरोक्त दिखाई देता है) एक एक्सप्लोरर विंडो द्वारा?
अद्यतन
मिले एक तरीके के रूप इस सवाल का मेरे अपने जवाब द्वारा वर्णित (नीचे देखें) SHFileOperation()
का उपयोग कर। हालांकि, यह समाधान बहुत व्यवहार्य नहीं है (नीचे भी देखें)।
मैंने इसका परीक्षण किया है और यह काम करता है, शायद आपके पास फ़ाइल भी खुली है या उस फ़ोल्डर के लिए पर्याप्त अनुमति नहीं है। मैंने एक डीआईआर 'डी: \ ए' बनाया है और एक्सप्लोरर के माध्यम से इसे ब्राउज किया है, जब मैंने इस कोड को निष्पादित किया है 'Directory.Move (" D: \\ a "," D: \\ b ");', फ़ोल्डर नाम एक्सप्लोरर और लोकेशन बार में स्वचालित रूप से बदल गया। –
@ वाउटर: मुझे लगता है कि आपको एक और स्तर जोड़ने की जरूरत है। 'D: \ a \ b' बनाएं, एक्सप्लोरर के माध्यम से' D: \ a \ b' पर ब्राउज़ करें और फिर 'a' (' x' या जो भी हो) का नाम बदलने का प्रयास करें। यह यहाँ काम नहीं करता है। अब 'ए' या' कंप्यूटर 'पर ब्राउज़ करें, इसलिए उस विंडो में न तो' ए 'और न ही 'बी' दिखाए जाते हैं (केवल ड्राइव दिखाए जाते हैं)। यह अब भी काम नहीं करता है। बीटीडब्लू, कोई फाइल नहीं खुलती है और निश्चित रूप से कोई अनुमति नहीं है। – user2261015
आंशिक रूप से, जब एक्सप्लोरर सबफ़ोल्डर दिखाता है, तो यह 'IOException' फेंकता है, जब एक्सप्लोरर रूट ड्राइव दिखाता है, यह काम करता है। मुझे कहना होगा कि मैं विंडोज 10 पर परीक्षण कर रहा हूं जो मामूली अंतर की व्याख्या कर सकता है। –