C# 目录名无效,已映射驱动器&;用户名

C# 目录名无效,已映射驱动器&;用户名,c#,C#,我有一个应用程序,它首先使用用户输入的凭据映射网络驱动器。但是,当驱动器尝试从Process.Start()运行程序时,驱动器会成功映射。我得到的目录名无效 根据我的研究,我已经阅读了在StartInfo中放置使用username/password时的工作目录。然而,这不起作用。工作目录是映射的驱动器。在此开始之前,我执行一个if(File.exists(w:\folder\filename).Process.start 我试图将工作目录硬编码到C:\,但仍然失败,因为它声明找不到文件 因此,当

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

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

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

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


任何帮助都将不胜感激。

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

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

如果您被迫使用驱动器号而不是UNC路径,则在新用户令牌的上下文中编写一个作为新用户启动的小型加载程序,然后启动依赖于驱动器的程序



另外,使用
C:\
不可能直接作为工作文件夹工作,因为
C:\
是一个受保护的文件夹,只有管理员才能将文件写入。如果您创建了一个子文件夹
C:\MyTestFolder\
,并在其上设置了适当的权限,我打赌它会工作。

您的问题是什么。我不太明白,你能添加一些代码来显示你试图启动流程的方式吗?你看过这个吗:。。。可能就是你要找的。谢谢!我能够恢复到只使用UNC。我有另一个应用程序做同样的事情,在那里我使用的是UNC,而不是映射驱动器。感谢您的解释和确认。