2014-04-01 79 views
3

我想启动资源管理器进程,任务栏等,但是当我启动它时(在代码中),我只有文件资源管理器的窗口开放,而不是其余。但是,如果我在taskManager中执行“explorer.exe”,它就会起作用。只是当我在Windows 7 64位机器上执行此操作时。在Windows 7 32位上,它工作正常! Si我们如何为64位Windows做到这一点?无法在c#中启动资源管理器进程,只是窗口文件资源管理器

以下是我的代码:

Process Appli = new Process(); 
Appli.StartInfo.FileName = "explorer.exe"; 
Appli.StartInfo.UseShellExecute = false; 
Appli.StartInfo.RedirectStandardOutput = false; 
Appli.Start(); 

而且当它执行,我只是有我的桌面(无图标)与窗口文件浏览器。

我的属性。平台这个项目是“任何CPU”

谁能帮助我吗?

非常感谢!

+0

是的,你加载浏览器时会发生这种行为。较早版本的Windows用于从任务管理器获取此版本,但不是较新版本。我相信当exe加载并交换行为时,它必须检测启动它的过程。 – Dreamwalker

+0

直接加载浏览器的原因是什么? – Dreamwalker

+0

你有没有试过将一个目录作为参数传递给explorer.exe? – andyp

回答

3

即使您指定了AnyCPU,Visual Studio也可以默认指定“prefer 32 bit”选项。如果是这样的话,那么它产生的explorer.exe将是一个32位的进程,不会是shell。

如果关闭项目属性/ Build下的“prefer 32 bit”标志,那么您的应用程序将作为64位应用运行,并将产生64位explorer.exe作为shell。

+1

超级有用!非常感谢你! – deltonio2

+0

非常好......很高兴能有帮助! – DotThoughts