我有一个用C#构建的程序。它将文件从网络驱动器复制到您的桌面。
string desktop = System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
File.Copy("T:\\DATS Launcher.exe", desktop + "\\DATS Launcher.exe", true);
如果我正常运行程序,它就可以运行。
如果我用"以管理员身份运行"来运行程序,我得到:
************** Exception Text **************
System.IO.DirectoryNotFoundException: Could not find a part of the path 'T:\DATS Launcher.exe'. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
为什么会发生这种情况?
答案 0 :(得分:4)
当您以管理员身份运行时,T:
驱动器未映射,因为它以不同的用户身份运行。
因此,您应该使用T:
驱动器的UNC路径,而不是驱动器名称。
答案 1 :(得分:3)
T:似乎是仅为当前用户安装的网络驱动器。
答案 2 :(得分:0)
您还可以执行以下操作:
设置string Letter="T";
和string Path=@"\\server\share";
(除了使用您的服务器并共享...)
然后
ProcessStartInfo psi=new ProcessStartInfo(
"net.exe",
"use "+Letter+" \""+Path+"\" /persistent:yes");
psi.CreateNoWindow=true; // We don't need a console showing up for this
psi.UseShellExecute=false; // Most likely optional. Required only if you want to
// mess with the standard input/output of the process.
// (for example, to check if mapping was successful).
Process prc=Process.Start(psi);
如果它是一个单一用途的应用程序,您可能还想设置/persistent:no
,但请使用您的判断。
希望这有帮助。