c#-使用Shell API重命名映射的驱动器

如何使用Windows Shell API和C#更改映射驱动器的友好名称?我的实际问题是我正在处理没有UNC路径的断开连接的网络驱动器,因此重命名它的唯一方法是从资源管理器中进行,但是我想以编程方式进行.解决方法:我遇到了类似...

如何使用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]装饰.

我希望回答这样的老问题不是坏习惯,但是我很沮丧,没有在任何地方找到解决方案.

本文标题为:c#-使用Shell API重命名映射的驱动器

基础教程推荐