小编Nic*_*las的帖子

如何阅读映射网络共享的"友好名称"?

基础知识:针对Dot Net 4的C#WinForms桌面应用程序.

我使用System.IO.DriveInfo枚举系统上的所有驱动器.这很好用,也可以告诉我它是什么类型的驱动器(固定/网络/ CD-ROM等).它还可以为我提供VolumeLabel - 这在本地驱动器上可以正常工作,但对于映射的网络驱动器,它可以为您提供主机上定义的逻辑磁盘的VolumeLabel.在Windows资源管理器中,您可以为任何映射的驱动器提供友好名称.有没有办法以编程方式检索此友好名称?这个名称显然是使用计算机的人所熟悉的名称.

例如,在下图中,"Critical"和"NonCritical"可能是同一逻辑磁盘上的不同共享,主机名上的卷名为"Data".查询VolumeName的WMI返回"Data",其他查询只返回驱动器号,或者什么都不返回.

例

我查看了通过WMI提供的信息(请参阅:如何以编程方式发现系统上的映射网络驱动器及其服务器名称?)但似乎没有返回此友好名称的属性.我查看了Caption,Description,SystemName和VolumeName - 像这样:

private void NetworkDrives()
{
    try
    {
        var searcher = new ManagementObjectSearcher(
            "root\\CIMV2",
            "SELECT * FROM Win32_MappedLogicalDisk");

        TreeNode share;
        TreeNode property;

        foreach (ManagementObject queryObj in searcher.Get())
        {
            share = new TreeNode("Name:" + queryObj["Name"]);                    
            share.Nodes.Add("Caption: " + queryObj["Caption"]);
            share.Nodes.Add("Description: " + queryObj["Description"]);
            share.Nodes.Add("SystemName: " + queryObj["SystemName"]);
            share.Nodes.Add("VolumeName: " + queryObj["VolumeName"]);
            share.Nodes.Add("DeviceID: " + queryObj["DeviceID"]);
            treeView1.Nodes.Add(share);
        }
    }
    catch (ManagementException ex)
    {
        MessageBox.Show("An error occurred while querying for WMI data: …
Run Code Online (Sandbox Code Playgroud)

c# wmi directoryinfo

5
推荐指数
1
解决办法
1697
查看次数

标签 统计

c# ×1

directoryinfo ×1

wmi ×1