C# System.Diagnostics.Process.Start问题“;找不到特定文件“;

C# System.Diagnostics.Process.Start问题“;找不到特定文件“;,c#,C#,当我在我的计算机上启动以下代码时,它工作正常 string target = e.Link.LinkData as string; target = System.IO.Directory.GetCurrentDirectory() + target; System.Diagnostics.Process.Start(target); 目标-文件的非绝对路径。文件不存在。 在清除虚拟机时,生成异常“找不到特定文件” 有什么建议吗? 更新 我在我的电脑上画了线,效果很好。 为什么它不能在另一台计

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

string target = e.Link.LinkData as string;
target = System.IO.Directory.GetCurrentDirectory() + target;
System.Diagnostics.Process.Start(target);
目标-文件的非绝对路径。文件不存在。 在清除虚拟机时,生成异常“找不到特定文件”

有什么建议吗?
更新
我在我的电脑上画了线,效果很好。
为什么它不能在另一台计算机上工作

永远不要使用
+
运算符连接路径。改用。这也可能是问题的根源。

用于查看它试图打开的文件,如前所述,使用Path.Combine连接路径


是否您在另一台计算机上有权限问题,而在您的开发人员计算机上没有权限问题?

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

可能缺少DLL?尝试将EXE加载到中,以查看它是否产生任何错误(在虚拟机上)


另外,Process.Start的MSDN页面说,如果PATH环境变量有一个包含引号的字符串,则ProcessStart可以抛出FileNotFoundException。

我要做的第一件事,尝试弄清这一点,就是验证失败时报告的确切路径

将您的代码修改为以下内容(注意,我已切换到使用Path.Combine,如另一张海报所述):

在出现故障的系统上运行此操作。完全限定路径真的是您所期望的吗

如果没有-你必须找到原因

如果是,那么开始调查权限之类的事情。执行此操作的用户是否具有访问或执行文件或其所在文件夹的权限


发回任何进度…

权限问题不合适。在虚拟机上,管理员用户运行应用程序在本例中,目标变量中包含您键入的斜杠。引发的异常不是FileNotFoundException,而是Win32 Exception仔细记录您收到的异常。如果它是Win32异常,我们需要知道其NativeErrorCode属性的值。
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);