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



我在VS2010中有一个使用VB.NET和.NET 3.5的Windows应用程序。它是无形式的,非常简单,它会"启动"剪贴板的内容,假设它是一个字符串。请注意,这不是ASP.NET,与web应用程序无关。

这是代码的核心:

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

多年来,它一直运行良好。如果用户有一个文件路径,比如"c:\temp\file.txt",在系统剪贴板中保存为字符串,他们可以运行这个应用程序(通过将其分配给鼠标按钮进行类型化),这就像进入"开始">"运行",将文本粘贴到中,然后点击Enter。

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

例如,这很好:

C:Temptest.txt

但不是这个:

L:Temptest.txt

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

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:UsersuserDocumentsVisual Studio 2010ProjectsVS10_Launch_ClipboardVS10_Launch_ClipboardModule1.vb:line 21
  InnerException: 

有什么想法吗?

感谢

Ernie

我测试了你的代码,它对我来说运行正常。我能重现你的错误的唯一方法是用未映射的驱动器运行它(更改为z:\text.txt,未映射)。

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

最新更新