प्रोग्राम डेटा फ़ाइलों को संग्रहीत करने के लिए सही जगह क्या है जो प्रत्येक उपयोगकर्ता के लिए समान हैं लेकिन प्रोग्राम के लिए लिखने योग्य हैं? एमएस विंडोज एक्सपी पर समकक्ष स्थान क्या होगा? मैंने पढ़ा है कि सी: \ ProgramData सामान्य उपयोगकर्ताओं द्वारा स्थापना के बाद लिखने योग्य नहीं है। क्या यह सच है? मैं प्लेटफ़ॉर्म एसडीके का उपयोग करके प्रोग्रामेटिक रूप से उस निर्देशिका को कैसे पुनर्प्राप्त कर सकता हूं?Vista और ProgramData
उत्तर
SHGetFolderPath() CSIDL_COMMON_APPDATA के CSIDL के साथ।
http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspx
पर और अधिक पढ़ें आप एक बैच फ़ाइल में पथ की जरूरत है, तो आप भी% AllUsersProfile% वातावरण चर का उपयोग कर सकते हैं।
आप उपयोग कर सकते हैं:
CString strPath;
::SHGetSpecialFolderPath(NULL, strPath.GetBuffer(1024), CSIDL_COMMON_APPDATA, FALSE);
Raymond Chen's article on this specific question देखें।
संक्षेप में आप सुरक्षा छेद के लिए पूछ रहे हैं।
एप्लिकेशन का उपयोग प्रशासकों द्वारा नहीं किया जाएगा और कंप्यूटर पर लॉगिन करने वाले सभी लोग भरोसेमंद हैं जिन कंपनियों के साथ हम काम कर रहे हैं। तो उपयोगकर्ताओं के बीच साझा डेटा साझा करने के लिए यह एक सुरक्षा समस्या नहीं है। Vista पर कोई भी सार्वजनिक फ़ोल्डर में चित्र और फिल्में साझा कर सकता है। प्रोगम्स भी यह होना चाहिए। – frast
विभिन्न विकल्पों यहां के एक महान सारांश है: http://blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead-of-program-files.aspx
मैं कहाँ प्रोग्राम डेटा के बजाय प्रोग्राम फ़ाइलें लिखना चाहिए? ।। "मेरे आवेदन फाइलों कार्यक्रम फ़ाइलें लिखने के लिए इस्तेमाल किया यह रूप में अच्छा एक जगह है जैसे कि यह यह पहले से ही पर किसी भी अन्य यह था अपने आवेदन के नाम के रूप में डाल करने के लिए महसूस किया:
एक आम आवेदन कोड अद्यतन यह है और क्योंकि मेरे उन व्यवस्थापक थे, यह ठीक काम किया। लेकिन अब मैं देखते हैं कि इस के रूप में महान एक जगह के रूप में मैं एक बार सोचा था कि चीजें रहना, नहीं किया जा सकता मानक उपयोगकर्ता की तरह विशेषाधिकारों के साथ रन क्योंकि यूएसी भी प्रशासक के साथ अधिकतर समय। तो, मुझे कहां से अपनी फाइलें रखनी चाहिए? "
असल में SHGetFolderPath
बहिष्कृत है।
SHGetKnownFolderPath
इसके बजाए उपयोग किया जाना चाहिए।
यदि मैं SHGetKnownFolderPath का उपयोग करता हूं तो मेरा सॉफ़्टवेयर केवल Windows Vista के अंतर्गत चलाएगा। SHGetFolderPath विंडोज 2000 और Vista पर भी काम करता है। – frast
@frast, हाँ, लेकिन आप SHGetKnowFolderPath उपलब्धता की जांच कर सकते हैं और बाहर निकलने पर इसका उपयोग कर सकते हैं। (लोडप्रोक या जो भी इसे कहा जाता है ...) के बाद आपका ऐप भविष्य के सबूत और विंडोज संस्करणों पर काम करेगा जहां एसएचजीएफ़फोल्डरपैथ गिरा दिया गया है, साथ ही साथ विंडोज 2000 पर भी। –
@ अमेजिबल मैं ऐसा करूँगा, लेकिन मैं तब तक प्रतीक्षा करता हूं जब तक कि मैं देखूं विंडोज संस्करण जो SHGetFolderPath का समर्थन नहीं करता है। – frast
- 1. XP और Vista
- 2. विंडोज 7 और Vista
- 3. Vista
- 4. Vista
- 5. Vista
- 6. Vista
- 7. Vista
- 8. Vista
- 9. Vista
- 10. Vista Aero
- 11. Vista/Aero
- 12. Vista (.NET)
- 13. Vista यूएसी, एक्सेस ऊंचाई और .NET
- 14. VISTA के लिए विंडोज एपीआई, 7 और
- 15. Win32 फ़ंक्शन सी के लिए पथ प्राप्त करने के लिए: \ ProgramData
- 16. TextRenderer.DrawText XP बनाम Vista
- 17. SetWindowsHookEx Vista/Windows 7
- 18. सेटअप प्रोजेक्ट में c: \ ProgramData फ़ोल्डर निर्दिष्ट करना?
- 19. मैं कैसे Windows Vista
- 20. सी # - Console.Beep Windows Vista
- 21. विंडोज 7/Vista
- 22. डेल्फी 6 और विनएक्सपी से डेल्फी 2007 और Vista/Win7
- 23. Vista/Windows 7 WPF FileDialog.Filter
- 24. Vista शैली एक्सप्लोरर/फ़ोल्डर दृश्य
- 25. सी # सेवा से विंडोज़ फॉर्म एप्लिकेशन (और Vista में)
- 26. Android-SDK हालांकि ग्रहण और एसडीके प्रबंधक पैकेज स्थापना त्रुटि मैं Windows Vista चला रहा हूँ Vista
- 27. Vista रीसायकल बिन कैसे काम करता है?
- 28. Vista यूएसी - समस्या मैपिंग नेटवर्क ड्राइव
- 29. गिट पुश हेरोकू मास्टर अनुमति VISTA
- 30. सीएसएस शैली जैसे विंडोज सात/Vista
मेरा मानना है कि वास्तव में% ALLUSERSPROFILE% है, एस –
एरर के साथ, हाँ, यह सही है, मैंने एस को याद किया :-) –