2009-12-21 8 views
5

जब कोई अखंडता स्तर पर कोई प्रक्रिया चल रही है, तो आप% temp% पर नहीं लिख सकते हैं इसलिए मुझे पथ खोजने के लिए एक तरीका चाहिए % अस्थायी% \ कम निर्देशिकाकम अंतःक्रिया प्रक्रिया के रूप में चलते समय% temp% Low का स्थान कैसे प्राप्त करें

उत्तर

-1

MSDN

के अनुसार (शब्द हार्डकोड "कम" के बिना) "कम-अखंडता प्रक्रियाओं लिखने और% उपयोगकर्ता प्रोफ़ाइल के अंतर्गत उप-फ़ोल्डर बना सकते हैं% \ AppData \ LocalLow"

मुझे नहीं लगता कि पिछले दो फ़ोल्डरों में हार्डकोडिंग थॉस्ट से बचने का कोई तरीका है।

2
MSDN

के अनुसार जब संरक्षित मोड में, एक्सटेंशन फ़ाइलों उपयोगकर्ता के UserProfile फ़ोल्डर के नीचे एक फ़ोल्डर, आम तौर पर % USERPROFILE% \ AppData \ LocalLow को लिख सकते हैं

। के साथ SHGetKnownFolderPath फ़ंक्शन का उपयोग करें FOLDERID_LocalAppDataLow ध्वज पर विस्तारित फ़ोल्डर नाम प्राप्त करें।

SHGetKnownFolderPath(FOLDERID_LocalAppDataLow, 0, 
    NULL, szPath, ARRAYSIZE(szPath)); 
+5

यह स्थानीय एपडाटा प्राप्त करता है लेकिन अस्थायी नहीं ... –

+0

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

4

की "Finding Low Integrity Write Locations" section "को समझना और संरक्षित मोड इंटरनेट एक्सप्लोरर में काम करते हुए" लेख निम्नलिखित मुलायम भोजन में शामिल हैं:

नोट संरक्षित मोड IE के वातावरण चर संशोधित करता है। नतीजतन, GetTempPath() फ़ंक्शन% Temp% \ Low देता है जब संरक्षित मोड सक्रिय होता है।

+0

मुझे विश्वास है कि यह केवल एक आईई है ... – Anders

1

तुम सिर्फ एक अस्थायी निर्देशिका के लिए लिखने के लिए देख रहे हैं, तो आप %temp% निर्देशिका के अंदर निर्देशिका के माध्यम से पाश और प्रत्येक के लिए लिखने की कोशिश कर सकता है।

यदि यूएसी अक्षम है, . पहला होना चाहिए। यदि नहीं, .\Low केवल एक होना चाहिए।

+0

यह दिलचस्प है, शायद ओएस आपको% temp% environemnt चर में Temp \ Low पथ देने का ख्याल रखता है, तो GetTempPath() सही पथ देता है? मैंने इसका परीक्षण नहीं किया। हालांकि, यह * सीधे * यूएसी से संबंधित नहीं है। यूएसी आपको हमेशा उच्च-अखंडता टोकन के साथ चलने से रोकता है - लेकिन जब भी यूएसी अक्षम होता है, प्रक्रियाओं को कम अखंडता के साथ बनाया जा सकता है। – Danra

संबंधित मुद्दे