PROCESS_ALL_ACCESS不包含PROCESS_TERMINATE!该怎么解决
PROCESS_ALL_ACCESS不包含PROCESS_TERMINATE!
E文不算太好,简单看了看MSDN的Process Security and Access Rights,
怎么看都觉得应该理解为PROCESS_ALL_ACCESS包含PROCESS_TERMINATE了。
但是如果要TerminateProcess关闭进程,用OpenProcess获取进程句柄时如果参数是PROCESS_ALL_ACCESS是关闭不了的,而非要有PROCESS_TERMINATE。
所以,希望明确一下PROCESS_ALL_ACCESS与PROCESS_TERMINATE都有没有包含关系,为什么出现以上情况。
------解决方案--------------------
E文不算太好,简单看了看MSDN的Process Security and Access Rights,
怎么看都觉得应该理解为PROCESS_ALL_ACCESS包含PROCESS_TERMINATE了。
但是如果要TerminateProcess关闭进程,用OpenProcess获取进程句柄时如果参数是PROCESS_ALL_ACCESS是关闭不了的,而非要有PROCESS_TERMINATE。
所以,希望明确一下PROCESS_ALL_ACCESS与PROCESS_TERMINATE都有没有包含关系,为什么出现以上情况。
------解决方案--------------------
- C/C++ code
#define OWNER_SECURITY_INFORMATION (0X00000001L) #define GROUP_SECURITY_INFORMATION (0X00000002L) #define DACL_SECURITY_INFORMATION (0X00000004L) #define SACL_SECURITY_INFORMATION (0X00000008L) #define PROCESS_TERMINATE (0x0001) #define PROCESS_CREATE_THREAD (0x0002) #define PROCESS_SET_SESSIONID (0x0004) #define PROCESS_VM_OPERATION (0x0008) #define PROCESS_VM_READ (0x0010) #define PROCESS_VM_WRITE (0x0020) #define PROCESS_DUP_HANDLE (0x0040) #define PROCESS_CREATE_PROCESS (0x0080) #define PROCESS_SET_QUOTA (0x0100) #define PROCESS_SET_INFORMATION (0x0200) #define PROCESS_QUERY_INFORMATION (0x0400) #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \ 0xFFF)
------解决方案--------------------
// If we can't open the process with PROCESS_TERMINATE rights,
// then we give up immediately.立刻放弃
hProc = OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE, FALSE,dwPID);
PROCESS_ALL_ACCESS存取,不能终止。
PROCESS_TERMINATE Enables using the process handle in the TerminateProcess function to terminate the process.
------解决方案--------------------如需要阅读该回复,请登录或注册****!