PROCESS_ALL_ACCESS 进程对象的所有可能访问权限。Windows Server 2003 和 Windows XP:在 Windows Server 2008 和 Windows Vista 上增加了 PROCESS_ALL_ACCESS 标志的大小。如果为 Windows Server 2008 和 Windows Vista 编译的应用程序在 Windows Server 2003 或 Windows XP 上运行,则
PROCESS_ALL_ACCESS 标志太大,指定此标志的函数失败并显示 ERROR_ACCESS_DENIED。要避免此问题,请指定操作所需的最小访问权限集。如果必须使用 PROCESS_ALL_ACCESS,请将 _WIN32_WINNT 设置为应用程序所针对的最低操作系统(例如,#define _WIN32_WINNT _WIN32_WINNT_WINXP)。有关详细信息,请参阅使用 Windows 标头。
PROCESS_CREATE_PROCESS (0x0080) 创建进程所必需的。
PROCESS_CREATE_THREAD (0x0002) 需要创建线程。
PROCESS_DUP_HANDLE (0x0040) 需要使用 DuplicateHandle 复制句柄。
PROCESS_QUERY_INFORMATION (0x0400) 需要检索有关进程的某些信息,例如其令牌、退出代码和优先级(请参阅 OpenProcessToken)。
PROCESS_QUERY_LIMITED_INFORMATION (0x1000) 需要检索有关进程的某些信息(请参阅 GetExitCodeProcess、GetPriorityClass、IsProcessInJob、QueryFullProcessImageName)。自动授予具有 PROCESS_QUERY_INFORMATION 访问权限的句柄 PROCESS_QUERY_LIMITED_INFORMATION。Windows Server 2003 和 Windows XP:不支持此访问权限。
PROCESS_SET_INFORMATION (0x0200) 需要设置有关进程的某些信息,例如其优先级类别(请参阅 SetPriorityClass)。
PROCESS_SET_QUOTA (0x0100) 需要使用 SetProcessWorkingSetSize 设置内存限制。
PROCESS_SUSPEND_RESUME (0x0800) 暂停或恢复进程所必需的。
PROCESS_TERMINATE (0x0001) 需要使用 TerminateProcess 终止进程。
PROCESS_VM_OPERATION (0x0008) 需要对进程的地址空间执行操作(请参阅 VirtualProtectEx 和 WriteProcessMemory)。
PROCESS_VM_READ (0x0010) 需要在使用 ReadProcessMemory 的进程中读取内存。
PROCESS_VM_WRITE (0x0020) 在使用 WriteProcessMemory 的进程中写入内存时需要。
SYNCHRONIZE (0x00100000L) 需要使用等待函数等待进程终止。