System.Diagnostics.Process.Start问题“无法找到特定文件”

当我在计算机上启动以下代码时,它可以正常工作

string target = e.Link.LinkData as string; target = System.IO.Directory.GetCurrentDirectory() + target; System.Diagnostics.Process.Start(target); 

target – 文件的非绝对路径。 文件存在。 清除虚拟机exception“无法找到特定文件”生成。

有什么建议?
更新
我强调在我的电脑上工作正常。 为什么它不适用于另一台计算机

我要做的第一件事就是validation失败时报告的确切路径。

修改你的代码到这样的东西(注意我已经切换到使用另一张海报提到的Path.Combine):

 string target = e.Link.LinkData as string; target = Path.Combine(System.IO.Directory.GetCurrentDirectory() + target); var fileInfo = new FileInfo(target); if (!fileInfo.Exists) { throw new FileNotFoundException("The requested file was not found: " + fileInfo.FullName); } System.Diagnostics.Process.Start(target); 

在失败的系统上运行此命令。 完全合格的路径是否真的符合您的预期?

如果不是 – 你已经得到了原因。

如果是,则开始调查权限等内容。 执行此操作的用户是否有权访问或执行该文件或其所在的文件夹?

回复任何进展……

切勿使用+运算符连接路径。 请改用Path.Combine() 。 这也可能是问题的根源。

GetCurrentDirectory()不会在其返回路径的末尾添加“\”字符。 如果你这样做,你需要自己添加它。

也许DLL丢失了? 尝试在Dependency Walker中加载EXE以查看它是否会产生任何错误(在您的虚拟机上)。

此外,Process.Start的MSDN页面表示如果PATH环境变量具有包含引号的字符串,ProcessStart可以抛出FileNotFoundException。

使用procmon来查看它试图打开的文件,并且已经指出,使用Path.Combine来连接你的路径。

可能是您在其他计算机上有权限问题,而您的开发计算机上没有这个问题?