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位”选项

由于有两个最可能的原因,您需要执行以下操作:

  • 检查项目属性
  • 在“构建”下有一个“平台目标”。确保已将其设置为任何CPU,并取消选中“首选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
    ,它就工作了。谢谢