2010-05-11 10 views
5

मेरे पास एक Winforms ऐप है जिसे लॉग लिखने की आवश्यकता है। ऐप को यूएसी चेतावनियों के बिना और गैर-व्यवस्थापक खाते का उपयोग करने की भी आवश्यकता है।XP, Vista और Windows 7 के साथ संगत लॉग फ़ाइलों को संग्रहीत करने के लिए एक सुरक्षित स्थान कहां है?

डिफ़ॉल्ट सुरक्षा सेटिंग्स के बिना चलाने के बिना मैं अपने लॉग कहां लिख सकता हूं? इसके अलावा, इसे विंडोज एक्सपी, विस्टा और 7 पर काम करना है।

अतिरिक्त अंक अगर सभी उपयोगकर्ता लॉग फ़ाइलों के एक ही सेट पर लिख सकते हैं।

उत्तर

6

आप पथ को कड़ी-कोड नहीं कर सकते (नहीं)। इसके बजाए, विंडोज़ से पूछें कि SHGetFolderPath को कॉल करके इसे स्टोर करना है, जिसका उपयोग वर्तमान उपयोगकर्ता (या सभी उपयोगकर्ताओं) ऐपडाटा निर्देशिका के स्थान को वापस करने के लिए किया जा सकता है।

MSDN लेख, सी समाधान के साथ: http://support.microsoft.com/kb/310294

उपयोगी डेल्फी उदाहरण: http://delphi.about.com/od/kbwinshell/a/SHGetFolderPath.htm

ध्यान दें कि यह, पथ के लिए एक बार की क्वेरी कर एक पूर्ण स्ट्रिंग के लिए कनवर्ट करने के लिए खतरनाक है, और अपनी सेटिंग्स में स्टोर करें। क्योंकि विंडोज़ इसे बदल सकता है। वे एक डोमेन में शामिल हो सकते हैं, विंडोज़ अपग्रेड कर सकते हैं, आदि, और विंडोज़ वास्तव में आपकी फाइलें ले जा सकती हैं। यदि आप फिर से पूछे बिना पुराने स्थान पर इंगित करते हैं, "यह फ़ोल्डर कहां है", तो आप तोड़ देंगे। वहां गया, ...

1

SHGetFolderPath का उपयोग कर आपके पास प्रति उपयोगकर्ता या वैश्विक लॉग फ़ाइल निर्देशिकाओं का उपयोग करने का विकल्प है। यदि आप CSIDL_COMMON_APPDATA का उपयोग करते हैं तो: "यह जानकारी घूमती नहीं है और कंप्यूटर का उपयोग करने वाले किसी के लिए भी उपलब्ध है।" जो आपको लगता है कि यह वही है जो आप चाहते हैं।

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