System.Diagnostics.Process无法从Windows窗体应用程序中的映射驱动器启动文件

我有一个Windows应用程序在VS2010中使用VB.NET和.NET 3.5。 它是无形的,非常简单,假设它是一个string,它将“启动”剪贴板的内容。 请注意,这不是ASP.NET,与Web应用程序无关。

这是代码的核心:

Dim proc As New Process() proc.StartInfo.FileName = strClipboard proc.StartInfo.UseShellExecute = True proc.StartInfo.CreateNoWindow = True proc.Start() 

多年来,它工作得很好。 如果用户有一个文件path,说:“c:\ temp \ file.txt”保存为系统剪贴板中的一个string,他们可以运行这个应用程序(键入分配给一个鼠标button),这就像去开始>运行,粘贴文本,然后按Enter键。

最近,我们的系统发生了一些变化。 不知道是什么,但我怀疑它与我们所有的新服务器configuration更改和/或组策略,因为现在它不会在任何映射的驱动器上工作。

例如,这工作得很好:

 C:\Temp\test.txt 

但不是这样的:

 L:\Temp\test.txt 

L是我们本地文件服务器上的映射驱动器。 我从exception中得到的错误只是它找不到文件:

 System.ComponentModel.Win32Exception was caught ErrorCode=-2147467259 Message=The system cannot find the path specified NativeErrorCode=3 Source=System StackTrace: at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) at VS10_Launch_Clipboard.Launch_Clipboard.Main() in C:\Users\user\Documents\Visual Studio 2010\Projects\VS10_Launch_Clipboard\VS10_Launch_Clipboard\Module1.vb:line 21 InnerException: 

有任何想法吗?

谢谢

厄尼

我测试了你的代码,它为我正确运行。 我可以重现您的错误的唯一方法是运行一个未映射的驱动器(更改为z:\ text.txt这是未映射)。

确保运行程序的计算机在其计算机上具有指定的映射驱动器。 仅仅因为程序可能驻留在服务器上而服务器具有所需的映射驱动器,并不意味着运行该程序的客户端具有相同的映射驱动器。