Search code examples
c#winformsfolderbrowserdialog

Get network path not drive letter from FolderBrowserDialog


I have a winform with a FolderBrowserDialog to choose a folder from a network drive. The issue is that it returns the drive letter (X:\Folder...) rather than the network path (\\Network\Projects\Folder...). How can I get the network path?


Solution

  • Quick and dirty code that will show the path as a network path in a MessageBox. You may want to add additional checks and/or restructure this a bit.

    using System.Management;
    
            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);