我有一个 32 位应用程序,我想注册打开“explorer.exe”作为跳转任务。它在 32 位 Windows 7 上运行良好,但在 64 位 Windows 中,它会给出错误“C:\Windows\system32\explorer.exe 未指定错误”。
由于资源管理器的完整路径是“C:\Windows\SysWOW64\explorer.exe”,我认为这是 Windows 在运行时看到 32 位模拟路径的结果,但跳转列表需要完整的 64 位路径。有没有一种简单的方法来构建这个可以在 64 位操作系统上运行的跳转列表?
我想我可以检查 Environment.Is64BitOperatingSystem 并将位置硬编码为“C:\Windows\SysWow64”(如果已设置),但使用硬编码路径很糟糕。
string exe = System.Reflection.Assembly.GetExecutingAssembly().Location;
string current = System.IO.Path.GetDirectoryName(exe);
var jl = new System.Windows.Shell.JumpList();
jl.ShowFrequentCategory = false;
jl.ShowRecentCategory = false;
jl.BeginInit();
jl.JumpItems.AddRange(new[]
{
new System.Windows.Shell.JumpTask
{
Title = "Explore",
ApplicationPath = "explorer.exe",
IconResourcePath = "explorer.exe",
Arguments = "/select,\"" + exe,
WorkingDirectory = current,
},
// other jump tasks here
});
jl.EndInit();
jl.Apply();