为什么 Process.Start() 仅在目标位于 "Program Files (x86)" 中时才打开快捷方式

Why Process.Start() only opens shortcuts if the target is in "Program Files (x86)"

Process.Start() 似乎只适用于目标位于 Program Files (x86) 文件夹而不是 Program Files 文件夹的快捷方式。

如果目标在 Program Files 文件夹中,我会收到休闲错误

"The system cannot find the file specified" (run-time error)

为什么会发生这种情况,有什么办法可以解决这个问题,这样我就可以打开目标位于 Program Files 文件夹中的快捷方式。

如果重要 - 我有 Windows 7 Ultimate

编辑

这是我的代码

public class MainClass
{
    static void Main()
    {
    Process.Start(Path.Combine(Directory.GetCurrentDirectory(), "Blender") );
    Console.ReadLine();
}
}

编辑 2 - 我的解决方案

我开始怀疑问题出在我的 IDE(Xamarin Studio) 上。所以我安装了 Visual studio,关闭了 prefer 32 bit 并将其设置为 AnyCPU 并且它起作用了。我不知道为什么 Xamarin Studio 会导致这个问题,但我知道 visual studio 让它消失了。

这是 32 位问题或文件位置问题。

到目前为止你尝试了什么?

你用什么代码?

我已经创建了一个非常基本的应用程序,它运行得很好,但如果我使用错误的路径会抛出你的错误。同样使用 "prefer 32-bit" 将。

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

  1. 检查您的项目属性。

在"Build"下面有一个"Platform Target"。确保将其设置为 Any CPU 并取消选中 "Prefer 32-bit" 框。

这很可能是您的问题。

  1. 如果还是失败,说明你走错了路。

尽管你可能会说 "I most certainly do not! It's on my desktop! I can see it!" 你错了。

将快捷方式放在public的位置,就可以放在大家的桌面上了。例如,我的桌面上有一个快捷方式,但在我的桌面下找不到。它出现在我的桌面上,因为它位于 public 文件夹中。

所以右键单击快捷方式并使用 "Location" 旁边列出的路径。这是它的真实位置。

示例:

Process.Start(new ProcessStartInfo()
            {
                FileName = @"C:\Users\Public\Desktop\Oracle VM VirtualBox"
            });

或者简单地说:

Process.Start(@"C:\Users\Public\Desktop\Oracle VM VirtualBox");