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

C# 从C启动一个新的explorer.exe进程#,c#,process,windows-explorer,child-process,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进程中打开。(因此我有两个运行explorer.exe进程。) 如果我执行:

如果我运行此命令:

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
进程中打开。(因此我有两个运行
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
进程?

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

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

ShellExecute(句柄“explore”、NULL、NULL、SW_SHOWNORMAL)


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


首先,你的第二根弦中有几个未替换的“\\”。哦,你的右边。。但这仅仅是因为我在飞行中编写了这个,在我的真实代码中它被转义了。仅供参考,
Process.Start
默认情况下使用
ShellExecute
,但如果使用一个带
ProcessStartInfo
的重载,则可以改为使用
CreateProcess
。这是真的。默认情况下,ProcessStartInfo.UseShellExecute设置为true。