2012-05-16 1 views
6

मैं एक मजबूत रिकर्सिव फ़ोल्डर डिलीटर फ़ंक्शन बनाने की कोशिश कर रहा हूं।FindFirstFile रिटर्न एक्सेस

सामान्य निर्देशिकाओं के साथ बहुत बढ़िया काम करता है।

समस्या प्रतीत होता है जब मैं एक "कट्टर" direcory बनाते हैं, जैसे:

C: \ test \ x \ x \ x \ x \ x \ x \ x \ x \ x \ x \ x \ एक्स \ x \ x \ x \ x \ x \ x \ x \ x \ ... \ x \ x \ x

इसकी लंबाई लगभग 25000 (एमएसडीएन सीमा से कम: 32,767) है। मूल रूप से जब तक CreatDirectory फ़ंक्शन विफल नहीं हुआ तब तक मैंने इस निर्देशिका को बार-बार बनाया।

अब, अजीब बात है, मेरी समारोह 2 निर्देशिकाओं को नष्ट करने में सक्षम है कि तब FindFirstFile 0x5 के साथ विफल हो जाता है:

\\?\C:\test\x\ ... \x\x\x\*.* < no error 
\\?\C:\test\x\ ... \x\x\*.*  < no error 
\\?\C:\test\x\ ... \x\*.*  < access denied 

(मैं इसे फिर से चलाएं कर सकते हैं, एप्लिकेशन धीरे धीरे है फ़ोल्डर ऊपर चबाता है, 2 से 2, संभवतः जब तक पथ की लंबाई बहुत छोटी हो जाती है)

मैं ढूँढ रहा हूं कि फ़ोल्डर खाली है या नहीं, यह जांचने के लिए FindFirstFile चला रहा है।

  • क्या कोई ऐसी सीमा है जो कम दस्तावेज है?
  • FindFirstFile बस काम नहीं करता है? (छोटी गाड़ी?)
  • क्या मुझे कुछ प्रकार की एनटीएफएस अनुमति की बात याद आ रही है? बाकी
  • कुछ ...

संपादित करें: महत्वपूर्ण नोट: अगर मैं कदम से कार्यक्रम कदम चलाने धीरे धीरे ... तो कुछ भी नहीं असफल हो जायेगी।

+1

कृपया हमें अपना स्ट्रिप कोड दिखाएं –

+0

कोड बहुत बड़ा है, और मुझे इसे पोस्ट करने के लिए उपयोगी नहीं लगता है। – lerosQ

+0

मैंने इस सटीक चीज को कई बार किया है और कभी भी कोई समस्या नहीं हुई है; समस्या आपके कोड में सबसे अधिक संभावना है। कम से कम इसे कम से कम उदाहरण में कम करने का प्रयास करें ताकि यह देखने के लिए कि यह कुछ स्पष्ट है या नहीं। – Luke

उत्तर

7

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

FILE_SHARE_DELETE ध्वज के अलावा अन्य फ़ोल्डर या फ़ाइल को हटाने का प्रयास करने से ACCESS_DENIED का कारण बन जाएगा।

इसकी पुष्टि करने के लिए, प्रक्रिया मॉनिटर का उपयोग खोलने के लिए करें और अपने पथ से मेल खाने वाली चीज़ों को बंद कर दें।

(बेशक यह भी पुष्टि करें कि आप FindClose कहलाते हैं)।

+0

इंडेक्सिंग सेवा गहन फ़ोल्डर ... हमेशा से पूछताछ कर रही थी। – lerosQ

+0

मेरी समस्या यह थी कि उस फ़ाइल पर एक्सेस अनुमतियां गलत थीं जिन्हें मैं एक्सेस करने का प्रयास कर रहा था। ऐसा लगता है कि यह एक 'duh' समाधान है, लेकिन मैं फ़ाइल गुणों-> सुरक्षा की जांच करता हूं और सुनिश्चित करता हूं कि सही एक्सेस समूह फ़ाइलों को एक्सेस कर सकता है, क्योंकि यह 'ACCESS_DENIED' का सबसे स्पष्ट मामला है, कारण ... आप एक्सेस नहीं कर सकते फाइलें = पी – mgrandi