目录名称无效,映射驱动器&用户名

时间:2013-11-21 04:14:58

标签: c#

我有一个应用程序,它首先使用用户输入的credentials映射网络驱动器。驱动程序成功映射,但是当它尝试从Process.Start()运行程序时。我得到目录名称无效。

根据我的研究,我已经阅读了在username/password中使用StartInfo时的工作目录。但是这不起作用。工作目录是映射驱动器。在此之前,我执行if (File.exists(w:\folder\filename) .. Process.start ....

我尝试将工作目录硬编码为C:\,但它仍然失败,因为它声明无法找到该文件。

因此,当以Process.Start作为另一个用户运行时,您无法使用网络路径,即使该路径是由同一个帐户映射的?我是否被迫在本地下载应用程序,以便Process.Start可以正常工作?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

你是对的,网络共享是每用户令牌。以另一个用户(或处于提升状态的同一用户)运行进程会导致创建新的用户令牌,因此从新进程的角度来看,所有活动共享都是“未映射”的。

您有几个选择。我尝试使用的第一件事是使用完整的UNC路径而不是映射的网络驱动器号。它可能只是你尝试(你正在运行的新用户需要连接到共享的权限)

如果您被迫使用驱动器号而不是UNC路径,那么编写一个小型加载程序,在新用户令牌的上下文中以新用户have that map the network drive启动,然后启动程序这取决于驱动器。


P.S。)使用C:\不能正常工作,因为C:\是受保护的文件夹,只有管理员可以写文件。如果你创建了一个子文件夹C:\MyTestFolder\并在其上设置了适当的权限,我敢打赌它会起作用。