首先,我的任务是以编程方式从C#程序映射网络驱动器,该管理员以管理员的身份运行。在C#中添加网络驱动器作为管理员:注销后消失
我设法映射一个驱动器作为我的普通管理员用户没有提升特权,它仍然可见后注销/重新启动(即使它没有重新连接,但这是一个不同的故事)。我使用了WNetAddConnection2
WinApi函数以及cmd中的net use
命令,只是为了检查。
不幸的是,两者都没有与提升特权工作。在这种情况下,驱动器会随着它被添加,但在重新启动后它会完全消失。
是否有可能通过提升的权限达到或者是否有一些Windows账号不可知的魔法东西阻止了这种情况?
这里是我使用的代码,将所有的标志,通常应使驱动器被记住并重新连接:
uint flags = (uint)(Flags.CONNECT_CMD_SAVECRED |
Flags.CONNECT_INTERACTIVE |
Flags.CONNECT_COMMANDLINE |
Flags.CONNECT_UPDATE_PROFILE);
NETRESOURCE NetworkResource = new NETRESOURCE();
oNetworkResource.dwType = ResourceType.RESOURCETYPE_DISK;
oNetworkResource.lpLocalName = Console.ReadLine() + ":";
oNetworkResource.lpRemoteName = @"\\[Server]\foo";
oNetworkResource.lpProvider = null;
Console.WriteLine(WNetAddConnection2(NetworkResource, "[Password]", @"[Domain]\[Username]", flags));
大多数驱动器映射为用户使用类似网络j:\ blah是记住,你的应用程序不会是.. – BugFinder
我真的不明白你的意思。这听起来像是你说应用程序添加的网络驱动器永远不会被记住,但这是错误的,所以我想我没有完全理解你。 – Snowfire
我相信默认情况下,应用程序映射的驱动器不是持久的..因为你没有显示任何代码,我不能告诉你是否试图使它们如此 – BugFinder