2008-09-25 20 views
9

में साझा किया गया है, क्या यह निर्धारित करने के लिए .NET फ्रेमवर्क के माध्यम से कोई तरीका है कि कोई फ़ोल्डर साझा किया गया है या नहीं?यह निर्धारित करना कि कोई फ़ोल्डर .NET

न तो डायरेक्टरी, डायरेक्टरीइन्फो या फ़ाइल एट्रिब्यूट्स में कोई संबंधित फ़ील्ड प्रतीत होता है।

एक बात जो मैं उल्लेख करना भूल गया था वह था कि मैं नेटवर्क शेयरों की जांच करना चाहता हूं। लेकिन मैं डब्लूएमआई सामान की जांच करूंगा।

उत्तर

4

आप WMI Win32_Share का उपयोग कर सकते हैं।

http://www.gamedev.net/community/forums/topic.asp?topic_id=408923

, क्वेरी करने को बनाने और साझा फ़ोल्डर को हटाने के लिए एक नमूना दिखाता है: पर एक नजर डालें।

+0

windowspowershell क्या आप मुझे बता सकते हैं कि कैसे साझा फ़ोल्डर की जाँच करने के स्थानीय पीसी में मौजूद है। मुझे इसे पॉकेट पीसी से उपयोग करने की आवश्यकता है (उपयोग करना .NET कॉम्पैक्ट फ्रेमवर्क), इस https://stackoverflow.com/questions/25710537/check-shared-path-is-available-in-pc – user2681579

0

डब्लूएमआई का उपयोग करने और SELECT * FROM Win32_ShareToDirectory क्वेरी करने का प्रयास करें।

9

आप WMI Win32_Share का उपयोग करके सभी साझा फ़ोल्डरों की एक सूची प्राप्त कर सकते हैं और देख सकते हैं कि आप जिस फ़ोल्डर को खोज रहे हैं वह उनके बीच है। तुम्हारे पास है, तो powershell उपयोग करने के लिए (है

public static List<string> GetSharedFolders() 
{ 

    List<string> sharedFolders = new List<string>(); 

    // Object to query the WMI Win32_Share API for shared files... 

    ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from win32_share"); 

    ManagementBaseObject outParams; 

    ManagementClass mc = new ManagementClass("Win32_Share"); //for local shares 

    foreach (ManagementObject share in searcher.Get()){ 

    string type = share["Type"].ToString(); 

    if (type == "0") // 0 = DiskDrive (1 = Print Queue, 2 = Device, 3 = IPH) 
    { 
    string name = share["Name"].ToString(); //getting share name 

    string path = share["Path"].ToString(); //getting share path 

    string caption = share["Caption"].ToString(); //getting share description 

    sharedFolders.Add(path); 
    } 

    } 

    return sharedFolders; 

} 

कृपया ध्यान दें कि मैं बेरहमी से इस link से बाइट्स पर प्रतिलिपि चिपकाया

+0

देखें, क्या आप मुझे बता सकते हैं कि स्थानीय पीसी में साझा फ़ोल्डर को कैसे जांचें। I इसे पॉकेट पीसी से जांचने की आवश्यकता है (.NET कॉम्पैक्ट फ्रेमवर्क का उपयोग करके), इस https://stackoverflow.com/questions/25710537/check-shared-path-is-available-in-pc देखें – user2681579

4

एक और तरीका यह बिल्ली त्वचा के लिए: यहाँ इस के साथ आप मदद कर सकता है कि एक टुकड़ा है स्थापित) WMI कॉल आह्वान करने के लिए, System.Management.Automation के लिए एक संदर्भ में शामिल हैं, यह सबसे likley \ प्रोग्राम फ़ाइलों में होगा \ संदर्भ विधानसभाओं \ Microsoft \

private void button1_Click(object sender, EventArgs e) 
{ 
    Runspace rs = RunspaceFactory.CreateRunspace(); 
    rs.Open(); 
    Pipeline pl = rs.CreatePipeline(); 
    pl.Commands.AddScript("get-wmiobject win32_share"); 

    StringBuilder sb = new StringBuilder(); 
    Collection<PSObject> list = pl.Invoke(); 
    rs.Close(); 
    foreach (PSObject obj in list) 
    { 
    string name = obj.Properties["Name"].Value as string; 
    string path = obj.Properties["Path"].Value as string; 
    string desc = obj.Properties["Description"].Value as string; 

    sb.AppendLine(string.Format("{0}{1}{2}",name, path, desc)); 
    } 
    // do something with the results... 
} 
संबंधित मुद्दे