2013-05-25 11 views
5

मैं सी # .NET 4 का उपयोग कर रहा वी.एस. 2010 के साथमैं "दस्तावेज़ और सेटिंग्स" फ़ोल्डर तक कैसे पहुंच सकता हूं?

जब पुनरावृत्ति पर कुछ रास्तों, मैं इस लाइन चल रहा हूँ:

files = Directory.GetFiles(path, searchPattern); 

मैं एक अपवाद जब पथ दस्तावेज़ और सेटिंग्स है फ़ोल्डर। मैं इसे कैसे एक्सेस कर सकता हूं? और नहीं, मैं कोशिश करने और पकड़ने के साथ फ़ोल्डर को छोड़ना नहीं चाहता। मैं इसे किसी भी तरह से एक्सेस करने में सक्षम होना चाहता हूं।

संपादित करें: मुझे एक फॉलो अप प्रश्न मिला है। जैसा कि मैंने आपको बताया था, मैं पथों पर फिर से चल रहा हूं। क्या Environment.GetFolderPath का उपयोग करने का कोई तरीका है, लेकिन जिस तरह से मैं वर्तमान में जांच कर रहा हूं, उसके अनुसार सही speical फ़ोल्डर को किसी भी तरह से idetifying?

उत्तर

4

आप इस

var mydocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) 

की तरह उपयोग करने के लिए MyDocuments फ़ोल्डर तक पहुँच प्राप्त करने के लिए किया है।

+0

मैं अपने सवाल एक सवाल अनुवर्ती जोड़ने के लिए है, तो आपको लगता है कि करने के लिए जवाब के रूप में अच्छी तरह से पता कर सकते हैं संपादित। –

+0

आप इस 'पर्यावरण। गेटफोल्डरपैथ (...)' के साथ आपके पथ के बराबर अच्छी तरह से समझा सकते हैं और यदि मिलान किया गया है, तो आप जारी रख सकते हैं या अन्यथा आप लूपिंग निर्माण में 'जारी रखें' को कॉल कर सकते हैं। – Saravanan

+0

मेरा मतलब कुछ स्वचालित रूप से था। कुछ (छद्म कोड): SpeicalFolder फ़ोल्डर = पर्यावरण। GetSpeicalFolderByFullPath (पथ); –

4

Environment.SpecialFolder

प्रणाली से विशेष फ़ोल्डरों इस तरह के प्रोग्राम फ़ाइलें, कार्यक्रम, प्रणाली, या स्टार्टअप के रूप में फ़ोल्डर्स, जो आम जानकारी होती है। विंडोज के संस्करण को स्थापित करते समय विशेष फ़ोल्डर्स सिस्टम द्वारा डिफ़ॉल्ट रूप से सेट किए जाते हैं, या उपयोगकर्ता द्वारा स्पष्ट रूप से सेट किए जाते हैं।

GetFolderPath विधि इस गणना से जुड़े स्थानों को वापस लौटाता है। इन फ़ोल्डर्स के स्थानों में विभिन्न ऑपरेटिंग सिस्टम पर अलग-अलग मान हो सकते हैं, उपयोगकर्ता स्थानों में से कुछ को बदल सकता है, और स्थान स्थानीयकृत हैं।

बस का उपयोग

string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
files = Directory.GetFiles(path, searchPattern); 

अपने कंप्यूटर में, यह रिटर्न C:\Users\Soner\Documents रूप

वहाँ Environment.GetFolderPath उपयोग करने के लिए एक रास्ता है, लेकिन किसी भी तरह सही speical फ़ोल्डर idetifying पथ के अनुसार मैं वर्तमान में जांच रहा हूँ?

चूंकि SpecialFolder enum प्रकार है, तो आप अपने मानों को लूप में फिर से सक्रिय कर सकते हैं। यहां कैसा दिखता है;

public enum SpecialFolder 
{ 
    AdminTools = 0x30, 
    ApplicationData = 0x1a, 
    CDBurning = 0x3b, 
    CommonAdminTools = 0x2f, 
    CommonApplicationData = 0x23, 
    CommonDesktopDirectory = 0x19, 
    CommonDocuments = 0x2e, 
    CommonMusic = 0x35, 
    CommonOemLinks = 0x3a, 
    CommonPictures = 0x36, 
    CommonProgramFiles = 0x2b, 
    CommonProgramFilesX86 = 0x2c, 
    CommonPrograms = 0x17, 
    CommonStartMenu = 0x16, 
    CommonStartup = 0x18, 
    CommonTemplates = 0x2d, 
    CommonVideos = 0x37, 
    Cookies = 0x21, 
    Desktop = 0, 
    DesktopDirectory = 0x10, 
    Favorites = 6, 
    Fonts = 20, 
    History = 0x22, 
    InternetCache = 0x20, 
    LocalApplicationData = 0x1c, 
    LocalizedResources = 0x39, 
    MyComputer = 0x11, 
    MyDocuments = 5, 
    MyMusic = 13, 
    MyPictures = 0x27, 
    MyVideos = 14, 
    NetworkShortcuts = 0x13, 
    Personal = 5, 
    PrinterShortcuts = 0x1b, 
    ProgramFiles = 0x26, 
    ProgramFilesX86 = 0x2a, 
    Programs = 2, 
    Recent = 8, 
    Resources = 0x38, 
    SendTo = 9, 
    StartMenu = 11, 
    Startup = 7, 
    System = 0x25, 
    SystemX86 = 0x29, 
    Templates = 0x15, 
    UserProfile = 40, 
    Windows = 0x24 
} 
+0

मैंने फॉलो अप प्रश्न जोड़ने के लिए अपना प्रश्न संपादित किया है यदि आप इसका उत्तर भी जान सकें। –

+0

@YonatanNir अपडेट किया गया। –

+0

क्या इसे स्वचालित रूप से करने का कोई तरीका है? कुछ (छद्म कोड) की तरह: SpeicalFolder फ़ोल्डर = पर्यावरण। GetSpeicalFolderByFullPath (पथ); इसके अलावा, मुझे कुछ समझ में नहीं आता है। जिस मार्ग को फेंक दिया गया है और अपवाद है सी: \\ दस्तावेज़ और सेटिंग्स और पर्यावरण द्वारा मुझे दिया गया पथ सी: \\ उपयोगकर्ता \\ योनाटन \\ दस्तावेज़ है। मैं रनटाइम के दौरान पथों की तुलना कैसे कर सकता हूं यह जानने के लिए कि एक अपवाद फेंकने वाला पथ वास्तव में अन्य विशेष पथ माना जाता था? मैं सिर्फ तब नहीं कर सकता (पथ == "सी: \\ दस्तावेज़ और सेटिंग्स") क्योंकि यह विभिन्न कंप्यूटरों के बीच बदल सकता है। –

0

आप प्रोग्राम सेट कर सकते हैं ताकि आप केवल व्यवस्थापक के रूप में ही चला सकें।

दृश्य स्टूडियो में:

सही परियोजना पर क्लिक करें -> गुण -> सुरक्षा -> ClickOnce सुरक्षा

सक्षम करें के बाद आप उस पर क्लिक करे एक फ़ाइल परियोजना के गुणों के तहत बनाया जाएगा एप्लिकेशन बुलाया फ़ोल्डर।प्रकट एक बार यह बनाया जाता है, आप सक्षम ClickOnce सुरक्षा सेटिंग्स विकल्प

खुला है कि फाइल चयन रद्द करें और इस लाइन बदल सकते हैं:

<requestedExecutionLevel level="asInvoker" uiAccess="false" /> 

रहे हैं:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

इस कार्यक्रम के व्यवस्थापक की आवश्यकता कर देगा विशेषाधिकार, और यह गारंटी देगा कि आपके पास उस फ़ोल्डर तक पहुंच है।

+0

यह काम नहीं किया –

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

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