从C#启动一个新的explorer.exe进程

时间:2012-02-17 15:56:36

标签: c# process windows-explorer child-process

如果我运行此命令:

C:\WINDOWS\explorer.exe "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{2227A280-3AEA-1069-A2DE-08002B30309D}"

来自Windows shell(通过 Windows + R ),我的打印机和传真在 explorer.exe进程中打开。 (所以我有2个正在运行的explorer.exe进程。)

如果我执行:

Process.Start(@"C:\WINDOWS\explorer.exe", @"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\" + 
                                          @"::{21EC2020-3AEA-1069-A2DD-08002B30309D}\" + 
                                          @"::{2227A280-3AEA-1069-A2DE-08002B30309D}");

来自C#程序,我的打印机和传真也是打开的,但是作为主explorer.exe进程的子进程(运行Windows shell的进程,包括任务栏等)。

如何使用C#中的打印机和传真窗口启动第二个explorer.exe进程?

1 个答案:

答案 0 :(得分:0)

初步想法 - 在文件夹选项中检查“在单独的过程中启动文件夹窗口”(组织 - >文件夹和搜索选项 - >视图选项卡)。默认情况下,这是未选中的,因此“检查”此项并再次尝试您的C#代码。

我知道这个设置会影响ShellExecute函数,但我不确定.NET的Diagnostic命名空间是否使用相同的路由。

ShellExecute(handle,“explore”,NULL,NULL,SW_SHOWNORMAL);


第二个想法 - 在stackoverflow中已经讨论过类似的问题,这篇文章可能会给你一些想法。

Start new process, without being a child of the spawning process