2013-08-23 16 views
1

我在VS2010中使用VB.NET和.NET 3.5创建Windows应用程序。它是无形的,非常简单,假设它是一个字符串,它将“启动”剪贴板的内容。请注意,这不是ASP.NET,与网络应用无关。System.Diagnostics.Process无法从Windows Form App中的映射驱动器启动文件

这里是代码的心脏:

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:\Temp\test.txt 

但不是这样的:

L:\Temp\test.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:\Users\user\Documents\Visual Studio 2010\Projects\VS10_Launch_Clipboard\VS10_Launch_Clipboard\Module1.vb:line 21 
    InnerException: 

任何想法?

感谢

厄尼

+1

尝试\\ 000.000.00.00 \ temp \ test.txt。我的意思是尝试与IP。或服务器名称\\ myserver \\ test.txt –

+0

驱动器映射是每个用户的属性。因此,如果它是由一个进程放在剪贴板上,而不是用另一个用户帐户运行,那么你将遇到问题。 –

+0

@kostasch。好的建议谢谢。它确实工作,如果我做完整UNC所以这个工作:\\ fsservername \ Data \ Temp \ test.txt但L:\ Temp \ test.txt不,即使我然后复制/粘贴到确切的字符串开始>运行它工作正常(这是所有正在我的机器上完成EXE保存在我的C盘)。 – Ernie

回答

1

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

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

+0

谢谢尼古拉斯。这是所有在我的本地机器上运行我的硬盘驱动器上的EXE。文件服务器进入游戏的唯一时间是当我尝试指向它的字符串,如“L:\ Temp \ test.txt”。其他一切都在我的C盘上。 – Ernie