如何使用Windows Shell API和C#更改映射驱动器的友好名称?我的实际问题是我正在处理没有UNC路径的断开连接的网络驱动器,因此重命名它的唯一方法是从资源管理器中进行,但是我想以编程方式进行.
解决方法:
我遇到了类似的问题,并使用以下代码解决了该问题:
Shell32.Shell shell = new Shell32.Shell();
((Shell32.Folder2)shell.NameSpace("X:")).Self.Name = "Friendly Label";
参考COM-> Microsoft Shell控件和自动化.
基本上,这是我使用的旧VBS代码的C#表示形式
Set oShell = CreateObject("Shell.Application")
oShell.NameSpace("X:").Self.Name = "Friendly Label"
但是区别在于,由于某种原因,NameSpace的C#实现返回folder object,而所有VB实现似乎都返回folder2 object.只有folder2具有’Self’属性,因此需要进行额外的强制转换.
另外,正如其中一条评论中所指出的那样,这仅在STA公寓内有效,因此Main()方法必须使用[STAThread]装饰.
我希望回答这样的老问题不是坏习惯,但是我很沮丧,没有在任何地方找到解决方案.