2009-01-31 10 views
12

वहाँ आवेदन डेटा निर्देशिका पथ प्राप्त करने की कई संभव तरीके हैं: CSIDL_APPDATA "एप्लिकेशन डेटा" निर्देशिका के लिए पथ प्राप्त करने का सबसे अच्छा तरीका?

साथ

  • %APPDATA% वातावरण चर
  • SHGetFolderPath कॉलिंग का उपयोग करके सबसे अच्छा तरीका क्या पथ प्राप्त करने के लिए है एक कार्यक्रम के भीतर से? जब मैं पर्यावरण चर का उपयोग करता हूं तो क्या कोई गठिया है?

    XP, Vista और आने वाले संस्करणों में कौन सी विधि सुरक्षित है?

उत्तर

12

मैं सुझाव दूंगा कि SHGetFolderPath() कॉल करना सबसे उचित और पोर्टेबल विधि है; विकल्प, जैसे पर्यावरण चर पढ़ने, या (बदतर) रजिस्ट्री से इसे निकालने का प्रयास कर रहे हैं, भविष्य में आपको यात्रा करने की संभावना है।

Raymond Chen has an article समझाते हुए कि रजिस्ट्री से ऐसे पथ खींचने का एक बुरा विचार क्यों है। अजगर में

string appDataPath = Environment.SpecialFolder.ApplicationData; 
+1

मैं लेख पढ़ा है, और मैं पहले मैंने किया था कि वास्तव में क्या लेख ने मुझे बताया * * करने के लिए नहीं :) –

0

आप नेट में प्रोग्रामिंग कर रहे हैं तो आप इस का उपयोग कर सकते हैं।

+0

SpecialFolder.AplicationData एक enum है, पथ नहीं है। @ जेएमएम के जवाब में दिखाए गए पर्यावरण। गेटफोल्डरपैथ का उपयोग करें – JulianM

0

एक महत्वपूर्ण अंतर::, जबकि os.environ['APPDATA'] एक बाइट स्ट्रिंग रिटर्न यूनिकोड फ़ाइल पथ ctypes.windll.shell32.SHGetFolderPathW एक यूनिकोड स्ट्रिंग रिटर्न के मामले में

12
string appDataPath = 
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

आप GetFolderPath विधि वास्तविक पथ के रूप में Environment.SpecialFolder.ApplicationData सिर्फ एक enum है का उपयोग करना होगा।

0

मामले किसी में सोच, रूबी में आदेश कैसा दिखेगा था निम्नलिखित:

appDataPath = ENV['APPDATA'] 
संबंधित मुद्दे