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命令创建的虚拟驱动器的卷标?
答案 0 :(得分: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
答案 1 :(得分:0)
在我的系统上,我无法更改虚拟驱动器的卷标,即使它创建的驱动器没有驱动器标签,但是在我的Windows 7计算机上有一个“仅用于显示”的解决方法:打开单击“我的电脑”,单击虚拟驱动器以突出显示它,然后等待一秒钟,然后在驱动器号上单击一次。这将为您提供通过键入内容并按Enter键重命名驱动器的选项。这通常会更改驱动器标签,但由于您无法更改虚拟驱动器的驱动器标签,因此Windows会创建此注册表项:HKEY_USERS\{your SID}\Software\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\{drive letter}\DefaultLabel
以向您显示标签。这不会更改驱动器标签,它只允许您为资源管理器中的虚拟驱动器提供一种显示名称。但对某些人来说,这可能就是他们所需要的一切。
答案 2 :(得分:0)
尝试以下代码
[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/以获取更多帮助。 如果状态为false,请参阅此链接,以了解error