将多个进程创建标志传递给CreateProcess

本文关键字:CreateProcess 标志 创建 进程 | 更新日期: 2023-09-27 17:50:26

我正在使用CreateProcess,我希望传递CREATE_SUSPENDEDCREATE_NO_WINDOW作为Process Creation Flags。

这是我的签名:

[DllImport("kernel32.dll", SetLastError = true)]
private static extern Boolean CreateProcess(String lpApplicationName, String lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes,
            Boolean bInheritHandles, UInt32 dwCreationFlags, IntPtr lpEnvironment, String lpCurrentDirectory, Byte[] lpStartupInfo,
            out PROCESS_INFORMATION lpProcessInfo);

问题是:如何传递多个标志?

将多个进程创建标志传递给CreateProcess

由于所有标志在单个二进制位置都有一个1,您可以通过OR或将它们相加将它们组合在一起:

CREATE_SUSPENDED | CREATE_NO_WINDOW

以下是它的工作原理:

CREATE_NO_WINDOW  is 0x08000000
CREATE_SUSPENDED  is 0x00000004

将它们进行"或"运算的结果是0x08000004