【问题标题】:Get network path not drive letter from FolderBrowserDialog从 FolderBrowserDialog 获取网络路径而不是驱动器号
【发布时间】:2016-06-07 18:46:45
【问题描述】:

我有一个带有FolderBrowserDialog 的winform,可以从网络驱动器中选择一个文件夹。问题是它返回驱动器号 (X:\Folder...) 而不是网络路径 (\\Network\Projects\Folder...)。如何获取网络路径?

【问题讨论】:

  • 如果您选择未映射到驱动器的网络位置会怎样?
  • 查看其他问题,答案与您要找的类似:(stackoverflow.com/questions/31818511/…)
  • @AdamV 我不确定如果没有映射位置会发生什么。出于我的目的,假设所有网络位置都已映射。
  • @Peter4499 这会有所帮助,谢谢。

标签: c# winforms folderbrowserdialog


【解决方案1】:

将路径显示为 MessageBox 中的网络路径的快速而肮脏的代码。您可能需要添加额外的检查和/或稍微调整一下结构。

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);

【讨论】:

  • 我在 var driveType = (DriveType)(uint)managementObject["DriveType"]; 上收到 System.TypeInitializationException
猜你喜欢
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
相关资源
最近更新 更多