设置驱动器卷标

7

我正在开发一个小工具,希望能够更改连接到计算机的闪存驱动器的卷标。我知道DriveInfo有这个功能,但我不知道如何实现。如果有人有代码示例,我将不胜感激。
以下是我目前拥有的内容:

DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
    if (d.IsReady && d.DriveType == DriveType.Removable)
    {
        //set volume label here
    }
}

1
在所有可移动驱动器上设置相同的卷标可能不符合您的意图(也不应该这样做)。不要随意更改驱动器数据。必须得到用户的许可。 - Hans Passant
这不会是“随意”的完成,而是由用户(即我)按下按钮来完成的。它是用于自动重命名驱动器,这样我就不必手动重复数百次了。 - Paxamime
2个回答

5

谢谢 James!我不知道为什么我在这方面遇到了这么多问题,但你帮我找到了正确的方法。

这里是设置驱动器标签的最终代码。对于其他使用此代码的人,它将更改连接到系统的任何可移动驱动器的名称。如果您需要仅更改特定驱动器型号的名称,则可以使用 WMI 的 Win32_DiskDrive 进行缩小范围。

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

2

我确实看过它,但是对于如何实现它,我还没有头绪。 - Paxamime
当您使用“d.VolumeLabel = newLabel;”时会发生什么?我有遗漏吗?是否抛出异常? - James Kovacs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接