C# 为什么Process.Start()仅在目标位于“中”时打开快捷方式;程序文件(x86)";
C# 为什么Process.Start()仅在目标位于“中”时打开快捷方式;程序文件(x86)";,c#,process,64-bit,process.start,program-files,C#,Process,64 Bit,Process.start,Program Files,Process.Start()似乎只适用于目标位于程序文件(x86)文件夹而不是程序文件文件夹中的快捷方式 如果目标在程序文件文件夹中,我会得到衰减错误 “系统找不到指定的文件”(运行时错误) 为什么会发生这种情况,有没有办法解决这个问题,这样我就可以打开目标位于程序文件文件夹中的快捷方式 如果重要的话,我有Windows7终极版 编辑 这是我的密码 public class MainClass { static void Main() { Process.Start(P
Process.Start()
似乎只适用于目标位于程序文件(x86)
文件夹而不是程序文件
文件夹中的快捷方式
如果目标在程序文件
文件夹中,我会得到衰减错误
“系统找不到指定的文件”(运行时错误)
为什么会发生这种情况,有没有办法解决这个问题,这样我就可以打开目标位于程序文件
文件夹中的快捷方式
如果重要的话,我有Windows7终极版
编辑
这是我的密码
public class MainClass
{
static void Main()
{
Process.Start(Path.Combine(Directory.GetCurrentDirectory(), "Blender") );
Console.ReadLine();
}
}
编辑2-我的解决方案
我开始怀疑问题出在我的IDE(Xamarin Studio)上。所以我安装了visualstudio,关闭了prefer32位并将其设置为AnyCPU,它就工作了。我不知道Xamarin Studio为什么会导致此问题,但我知道visual Studio解决了此问题。这是一个32位问题或文件位置问题 到目前为止你试过什么 你用什么代码 我已经创建了一个非常基本的应用程序,它运行得很好,但如果我使用了错误的路径,将抛出您的错误。也可以使用“首选32位”选项 由于有两个最可能的原因,您需要执行以下操作:
Process.Start(new ProcessStartInfo()
{
FileName = @"C:\Users\Public\Desktop\Oracle VM VirtualBox"
});
或者简单地说:
Process.Start(@"C:\Users\Public\Desktop\Oracle VM VirtualBox");
路径不可能是错误的,因为我要打开的快捷方式位于
当前目录
。我曾尝试将平台目标更改为任何CPU,但没有成功。到目前为止,唯一有效的方法是使用完整路径,如C:\Program Files\Blender Foundation\Blender
,但这不会使代码正常工作。你怎么看不出来?您是否通过VS运行它?如果有,在调试或发布文件夹中是否有快捷方式?如果将已编译的exe放在快捷方式旁边,然后运行它,会发生什么?我认为您是通过VS运行它的,在这种情况下,路径是错误的,除非您在调试/发布文件夹中有快捷方式(这就是“当前目录”的含义)。您的代码在我的系统上按原样运行,没有错误,因此请确保您传递的路径是您想要的路径。快捷方式位于已编译的exe旁边的调试文件夹中。我已将其设置为任何CPU。它仍然给我这个错误。我使用的Xarmine studio与Visusl StudioTry在zip文件夹中向我发送整个代码完全相同,因为我无法重现代码中的错误。我的电子邮件是jeremys18@gmail.com.I我开始怀疑问题出在我的IDE(Xamarin Studio)上。所以我安装了VisualStudio,关闭了prefer32
位,并将其设置为AnyCPU
,它就工作了。谢谢