【问题标题】:How to set volume label?如何设置卷标?
【发布时间】:2016-09-14 22:51:11
【问题描述】:
public void SetVolumeLabel(string newLabel)
{
    DriveInfo[] allDrives = DriveInfo.GetDrives();
    foreach (DriveInfo d in allDrives)
    {
        if (d.IsReady && d.DriveType == DriveType.Removable)
        {
            d.VolumeLabel = newLabel;
        }
    }
}

public string VolumeLabel { get; set; }

// Setting the drive name
private void button1_Click(object sender, EventArgs e)
{
    SetVolumeLabel("FlashDrive");
}

但是,它不适用于虚拟驱动器。如何更改SUBST命令创建的虚拟驱动器的卷标?

【问题讨论】:

标签: c#


【解决方案1】:

你不能这样做。

来自the Microsoft documentation for SUBST

The following commands do not work, or should not be used,
on drives used in the subst command:

chkdsk 
diskcomp 
diskcopy 
format 
label <------- NOTE
recover 

【讨论】:

  • 有没有办法改变虚拟驱动器的卷标?或者如何在不使用 SUBST 命令的情况下在 c# 中创建虚拟驱动器?
  • @PavanModi 你也可以使用net use G: \\localhost\c$\Somefolder /persistent:yes 之类的东西,但这也不允许设置卷标。
  • 你知道如何使用 c# 在我的电脑中创建虚拟驱动器吗?
  • @PavanModi 我知道的唯一方法是通过类 Process 使用 shell 来运行 Label 或 Net 命令。
  • 我可以举一个例子来说明如何使用'shell via class Process 来运行标签或网络命令'?
【解决方案2】:

在我的系统上,即使创建它的驱动器没有驱动器标签,我也无法更改虚拟驱动器的卷标,但有一个“仅用于显示”的解决方法适用于我的 Windows 7 计算机:打开我的电脑,单击虚拟驱动器以突出显示它,然后等待一秒钟,然后单击驱动器号。这将为您提供通过输入内容并按 Enter 来重命名驱动器的选项。这通常会更改驱动器标签,但由于您无法更改虚拟驱动器的驱动器标签,Windows 而是创建此注册表项:HKEY_USERS\{your SID}\Software\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\{drive letter}\DefaultLabel 以向您显示标签。这不会更改驱动器标签,它只允许您为资源管理器中的虚拟驱动器提供一种显示名称。但对于某些人来说,这可能就是他们所需要的。

【讨论】:

  • 我认为他要求一个可行的 c# 解决方案,但我喜欢你的回答。
【解决方案3】:

试试下面的代码

    [DllImport("kernel32.dll", SetLastError = true)]
    static extern bool SetVolumeLabel(string lpRootPathName, string lpVolumeName);
    public static void Main()
    {
        string name = "E:\\";
        var status = SetVolumeLabel(name, "Test");
        var error = Marshal.GetLastWin32Error();
        Console.WriteLine(status + " " + error);
    }

请参阅http://www.pinvoke.net/ 以获得更多帮助。 如果状态为假,请参考此链接,以了解error

【讨论】:

    猜你喜欢
    • 2017-10-09
    • 2011-08-25
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2018-05-10
    • 2018-12-01
    • 2017-08-02
    • 1970-01-01
    相关资源
    最近更新 更多