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。