创建进程时隐藏所有子进程
Posted
技术标签:
【中文标题】创建进程时隐藏所有子进程【英文标题】:Hide all subprocesses when creating a process 【发布时间】:2021-02-16 02:54:05 【问题描述】:论据
WindowStyle = ProcessWindowStyle.Hidden,
CreateNoWindow = true,
只在第一个创建的进程上工作。例如,如果我们调用一个cmd,它又调用了另一个cmd,那么只有父级会被隐藏。
Process p = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo
UseShellExecute = false,
WindowStyle = ProcessWindowStyle.Hidden,
CreateNoWindow = true,
FileName = @"cmd.exe",
Arguments = "/K start cmd"
;
p.StartInfo = startInfo;
p.Start();
有没有办法隐藏所有子进程?
【问题讨论】:
【参考方案1】:没有。你隐藏了一个特定的窗口,就是这样。一个进程可以显示任意数量的窗口,启动新进程也是如此。
如果您可以控制正在运行的脚本,则可以使用 start
和 /B
参数,它允许您在不创建新窗口的情况下启动另一个进程 - 但同样,它不是“继承的” ;你需要在任何你想避免打开新终端的地方添加它。
【讨论】:
问题是我运行 procmon.exe,它运行 procmon64.exe,因此它是可见的。没有办法将 procmon64.exe 本身作为文件获取。 @Yair3230 您可以使用 procmon 的/minimized
参数使其开始最小化到通知区域(/quiet
可能也有帮助)。如果这对您来说还不够好,您可以在进程开始后隐藏窗口,但这会显示窗口至少一小会儿。以上是关于创建进程时隐藏所有子进程的主要内容,如果未能解决你的问题,请参考以下文章