PROCESS_ALL_ACCESS不包含PROCESS_TERMINATE!

蒙飞鸿 2010-11-15 04:44:51
E文不算太好,简单看了看MSDN的Process Security and Access Rights,
怎么看都觉得应该理解为PROCESS_ALL_ACCESS包含PROCESS_TERMINATE了。
但是如果要TerminateProcess关闭进程,用OpenProcess获取进程句柄时如果参数是PROCESS_ALL_ACCESS是关闭不了的,而非要有PROCESS_TERMINATE。

所以,希望明确一下PROCESS_ALL_ACCESS与PROCESS_TERMINATE都有没有包含关系,为什么出现以上情况。
...全文
648 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ygshan 2012-02-22
  • 打赏
  • 举报
回复
PROCESS_ALL_ACCESS

在delphi7中是:$1F0FFF
在delphiXE2中却是:$1FFFFF
这是为什么呢?

因为delphi7的代码用XE2编绎后得不到正确结果,在OD中调试发现的。
szszwjn 2012-01-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 mengfeihong 的回复:]
……
但是如果要TerminateProcess关闭进程,用OpenProcess获取进程句柄时如果参数是PROCESS_ALL_ACCESS是关闭不了的,而非要有PROCESS_TERMINA……
[/Quote]


同7楼Lactoferrin。我测试了,用PROCESS_ALL_ACCESS成功结束进程。

楼主说的话太武断。没有明确测试前,别下结论。
Lactoferrin 2011-02-21
  • 打赏
  • 举报
回复
你怎么试的,PROCESS_ALL_ACCESS会尝试获取所有存取权限,有一个失败就不行
Lactoferrin 2011-02-21
  • 打赏
  • 举报
回复
int main()
{
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,0,316);
TerminateProcess(hProcess,0);
return 0;
}
成功结束进程
蒙飞鸿 2011-02-21
  • 打赏
  • 举报
回复
求总结这个说法好象大了点,总之意思是:1楼说PROCESS_ALL_ACCESS包含PROCESS_TERMINATE,3楼说需要使用PROCESS_TERMINATE,但没有解决题目的问题啊
蒙飞鸿 2011-02-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lactoferrin 的回复:]
你怎么试的,PROCESS_ALL_ACCESS会尝试获取所有存取权限,有一个失败就不行
[/Quote]
很有可能是这个原因了,虽然记得当时我也检查过OpenProcess(PROCESS_ALL_ACCESS,XXX,XXX)是否成功,但可能检查得不够准确。只有这个解释比较接近我的情况了,可惜问题解决后都找不到是哪段代码来再重新测试了。
蒙飞鸿 2010-11-25
  • 打赏
  • 举报
回复
继续求个中文逻辑的完整解释。
蒙飞鸿 2010-11-16
  • 打赏
  • 举报
回复
求总结(最好是中文的)
schlafenhamster 2010-11-15
  • 打赏
  • 举报
回复
// 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.
蒙飞鸿 2010-11-15
  • 打赏
  • 举报
回复
1楼的内容,看着是包含的(|0xFFF ),那为何
“TerminateProcess关闭进程,用OpenProcess获取进程句柄时如果参数是PROCESS_ALL_ACCESS是关闭不了的,而非要有PROCESS_TERMINATE。
Eleven 2010-11-15
  • 打赏
  • 举报
回复
#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)

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧