2011-02-06 16 views
9

मुझे एक पायथन प्रोग्राम मिला है जो कई निर्देशिकाओं को साफ़ करना है और उनमें से एक C:\windows\system32\inetsrv\metaback है; हालांकि, os.path.exists() उस निर्देशिका पर झूठा रिटर्न देता है भले ही यह मौजूद है (और मुझे इसे एक्सेस करने की अनुमति है)।os.path.exists क्यों होगा ("सी: \ विंडोज़ \ system32 \ inetsrv \ मेटाबैक") यह मौजूद होने पर भी झूठी वापसी?

दिलचस्प बात यह भी है कि उपकरण windirstat पूरी तरह से इसे याद करता है।

क्या कोई ऐसा कारण सोच सकता है कि यह क्यों हो सकता है और यह देखने का एक और तरीका है कि मैं यह देखने के लिए जांच सकता हूं कि यह अस्तित्व में है या नहीं? मैं भी os.listdir() चलाने के लिए प्रतीत नहीं कर सकता।

अद्यतन: os.path.exists() यदि यह बॉक्स 32-बिट है, तो यह निर्देशिका पर काम करता है, लेकिन यह 64-बिट नहीं है। 32-बिट बॉक्स पर विंडस्टैट में ठीक से दिखाया गया है।

+1

यह भी एक निर्देशिका है कि आप को लिख सकते हैं है? एक्सेस करें! = लिखें/पढ़ें, इसलिए यह समझा सकता है कि आप इसे क्यों सूचीबद्ध नहीं कर सकते हैं। – Blender

+0

क्या आप कमांड प्रॉम्प्ट पर जा सकते हैं और वहां से नेविगेट कर सकते हैं? – Gerrat

+0

मुझे नहीं लगता कि सर्वरफॉल्ट पर इसे ले जाना उचित होगा, क्योंकि यह अनुमति अनुमति नहीं है। –

उत्तर

1

विंडोज x64 सुरक्षा विंडोज x86 की तुलना में काफी कठिन है; खासकर वर्तमान रिलीज ओएसईएस (7, 2008) के तहत।

आपकी लिपि की तरह लगता है कि वास्तव में इसे चलाने की अनुमति नहीं है। आम तौर पर एमएस ने कुछ निर्देशिका पथों को बंद कर दिया (जैसे सी: \ inetpub) जिसके लिए किसी भी क्रिया को करने के लिए उन्नत निजीकृत की आवश्यकता होती है।

इसके लिए बहुत सारे कारण हैं और इसे आम तौर पर बहुत अच्छी बात माना जाता है।

मेरा मानना ​​है कि आप इसे उच्च स्क्रिप्ट देने के लिए "स्क्रिप्ट के रूप में चलाएं" के रूप में अपनी स्क्रिप्ट (या जिसे इसे निष्पादित करते हैं) के रूप में चिह्नित करना चाहते हैं। बेशक, आपको यूएसी के माध्यम से निष्पादन की पुष्टि करने की आवश्यकता हो सकती है।

अधिक जानकारी के लिए, serverfault.com पर जाएं और वहां से पूछें।

+0

यह अनुमति अनुमति नहीं है, यह एक पथ व्याख्या समस्या है। –

+0

इसके अलावा, विंडोज 2008 नवीनतम संस्करण नहीं है, यह * Vista * का सर्वर संस्करण है। –

+0

एक तरफ मार्केटिंग, 7 और आर 2 आश्चर्यजनक रूप से हुड के नीचे विस्टा के करीब हैं। – NotMe

26

यह काम पर सिस्टम फ़ोल्डर्स का पुनर्निर्देशन है। When a 32-bit process is running on a 64-bit version of Windows and uses the path %WINDIR%\System32, Windows substitutes %WINDIR%\SysWow64.

फ़ंक्शन आपको यह बताने के लिए झूठा लौट रहा है कि C:\windows\syswow64\inetsrv\metaback मौजूद नहीं है, और यह संभवतः बिल्कुल सही है।

बजाय का प्रयास करें:

os.path.exists("C:\\windows\\sysnative\\inetsrv\\metaback") 
संबंधित मुद्दे