无法在C#中启动资源管理器进程,只能启动文件资源管理器。

5
我想启动资源管理器进程,包括任务栏等,但是当我在代码中启动它时,只有文件资源管理器窗口打开,没有其他部分。但是如果我在任务管理器中执行“explorer.exe”,它就可以工作。这只发生在64位Windows 7机器上。在32位的Windows 7上,它可以正常工作!那么我们该如何在64位Windows上做到呢?
这是我的代码:
Process Appli = new Process();
Appli.StartInfo.FileName = "explorer.exe";
Appli.StartInfo.UseShellExecute = false;
Appli.StartInfo.RedirectStandardOutput = false;
Appli.Start();

当它执行时,我只看到我的桌面(没有图标)和一个文件资源管理器窗口。

该项目的属性平台为“任何 CPU”。

有人能帮帮我吗?

非常感谢!


是的,当加载资源管理器时,您会获得此行为。早期版本的Windows也会从任务管理器中获得这种行为,但较新版本不会。我认为它必须在加载exe时检测到启动它的进程并交换行为。 - Dreamwalker
1
这是一个控制台应用程序,可以重新启动资源管理器。https://dev59.com/P0bRa4cB1Zd3GeqP157s#10438722 - Dreamwalker
可能是重复的问题:如何编程重新启动Windows资源管理器进程 - Dreamwalker
@andyp 是的,我已经尝试使用目录作为参数,但它不起作用。 - deltonio2
@Dreamwalker 我会尝试这段代码并告诉你它是否有效。谢谢你的回答! - deltonio2
显示剩余2条评论
1个回答

6
即使您指定 AnyCPU,Visual Studio 默认情况下也可能会指定“优先使用 32 位”选项。如果是这种情况,则它生成的 explorer.exe 将是一个 32 位进程,并且不会是 shell。
如果在项目属性/构建下关闭“优先使用 32 位”标志,则您的应用程序将作为 64 位应用程序运行,并将生成 64 位 explorer.exe 作为 shell。

太好了...很高兴能帮忙! - DotThoughts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接