2016-06-07 113 views
2

我有一個Winform與FolderBrowserDialog從網絡驅動器中選擇一個文件夾。問題是它返回驅動器號(X:\Folder...)而不是網絡路徑(\\Network\Projects\Folder...)。我如何獲得網絡路徑?獲取網絡路徑不從FolderBrowserDialog驅動器號

+1

如果選擇未映射到驅動器的網絡位置,會發生什麼情況? –

+1

看到這個問題,答案類似於你要找的東西:(http://stackoverflow.com/questions/31818511/how-to-get-folderbrowserdialog-to-show-only-network) – Peter4499

+0

@AdamV我不確定如果位置未被映射會發生什麼情況。爲我的目的,假設所有網絡位置都被映射。 – Programmer

回答

2

快速和骯髒的代碼將顯示路徑作爲MessageBox中的網絡路徑。你可能想要添加額外的檢查和/或重構這一點。

 var dialog = new OpenFileDialog(); 
     dialog.ShowDialog(); 

     var path = dialog.FileName; 
     using (var managementObject = new ManagementObject()) 
     { 
      managementObject.Path = new ManagementPath($"Win32_LogicalDisk='{path.Substring(0,2)}'"); 
      var driveType = (DriveType)(uint)managementObject["DriveType"]; 
      var networkPath = Convert.ToString(managementObject["ProviderName"]); 


      if (driveType == DriveType.Network) 
      { 
       MessageBox.Show(path.Replace(path.Substring(0, 3), networkPath)); 
      } 
     } 

     MessageBox.Show(path); 
+0

我得到一個System.TypeInitializationException在'var driveType =(DriveType)(uint)managementObject [「DriveType」];'' –