Determining if a folder is shared in .NET

后端 未结 4 914
情书的邮戳
情书的邮戳 2020-11-30 12:42

Is there a way through the .net framework to determine if a folder is shared or not?

Neither Diretory, DirectoryInfo or FileAttributes seem to have any corresponding

4条回答
  •  离开以前
    2020-11-30 13:10

    You can get a list of all the shared folders using the WMI Win32_Share and see if the folder you're looking for is between them. Here's a snippet that might help you with this:

    public static List GetSharedFolders()
    {
    
      List sharedFolders = new List();
    
      // 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;
    
    }
    

    Please note that I brutally copy-pasted from this link on bytes

提交回复
热议问题