如何通过CMD修改网络驱动器名称?C#实现遇参数不兼容错误
网络驱动器重命名“参数不兼容”错误解决办法
问题根源
你用label命令修改网络驱动器名称时触发错误,是因为**label命令仅支持本地磁盘卷**,无法作用于网络映射驱动器,所以会提示“参数不兼容”。
可行解决方案
以下两种C#实现方式可以正确修改网络驱动器的显示名称:
方案1:WMI 实现
借助WMI的Win32_NetworkConnection类直接修改网络连接的名称属性:
using System.Management; public void RenameNetworkDrive(char driveLetter, string newName) { string drivePath = $"{driveLetter}:"; var searcher = new ManagementObjectSearcher( $"SELECT * FROM Win32_NetworkConnection WHERE LocalName = '{drivePath}'" ); foreach (ManagementObject connection in searcher.Get()) { connection["ConnectionName"] = newName; connection.Put(); MessageBox.Show($"网络驱动器 '{drivePath}' 已重命名为 '{newName}'"); return; } MessageBox.Show($"未找到目标网络驱动器 '{drivePath}'"); }
注意:需要添加
System.Management程序集引用,且程序需以管理员权限运行。
方案2:Shell32 COM 实现
通过Windows Shell的COM接口修改,逻辑和资源管理器重命名一致,无需管理员权限:
using Shell32; public void RenameNetworkDriveViaShell(char driveLetter, string newName) { var shell = new Shell(); var driveFolder = shell.NameSpace($"{driveLetter}:"); if (driveFolder != null) { driveFolder.Self.Name = newName; MessageBox.Show($"网络驱动器 '{driveLetter}:' 已重命名为 '{newName}'"); } else { MessageBox.Show($"未找到目标网络驱动器 '{driveLetter}:'"); } }
注意:需要添加对
Microsoft Shell Controls And Automation(Shell32.dll)的COM引用。
原代码问题说明
你之前调用label命令的思路有误,该命令仅用于修改本地磁盘的卷标,不适用于网络映射驱动器,因此必然会返回错误。替换为上述任一方案即可解决问题。
内容的提问来源于stack exchange,提问作者Hugo Jiménez
相关产品推荐
相关产品推荐

