过程安全和访问权限
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
过程安全和访问权限
Microsoft Windows 安全模型使您能够控制对过程的对象的访问。有关安全性的详细信息,请参阅访问控制模型。
当用户登录时,系统就会收集一组唯一地标识用户身份验证过程,并将其存储在一个访问令牌中的数据。此访问令牌描述与用户关联的所有进程的安全上下文。一个过程的安全上下文是凭据的组给进程或创建进程的用户帐户。
指定当前的安全上下文,使用CreateProcessWithTokenW函数的过程,可以使用一个标记。调用CreateProcess、CreateProcessAsUser或CreateProcessWithLogonW函数时,可以指定进程的安全描述符。如果您指定NULL,过程获取默认的安全描述符。一个过程的默认安全描述符中的Acl 来从主或模拟标记的创建者。
进程的安全描述符中检索调用GetSecurityInfo函数。若要更改进程的安全描述符,调用SetSecurityInfo 函数。
处理对象的有效的访问权限包括标准访问权限和一些过程特定的访问权限。下表列出了所有对象都使用的标准的访问权限。
下表列出了过程特定的访问权限。
增加对Windows Server 2008 和Windows Vista 的
PROCESS_ALL_ACCESS 标志的大小。如果在Windows
Server 2003 或Windows XP/2000年上运行Windows
Server 2008 和Windows Vista 编译的应用程序,则
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) 检索进程的某些信息,所需,如其的令牌退出代码和优先级类
(参见相关联、GetExitCodeProcess、
GetPriorityClass,和IsProcessInJob)。
PROCESS_QUERY_LIMITED_INFORMATION (0X1000) 所需检索进程的某些信息(见QueryFullProcessImageName)。
PROCESS_QUERY_INFORMATION 访问权限的句柄会自动授予PROCESS_QUERY_LIMITED_INFORMATION。Windows Server 2003 及Windows XP/2000 年:不支持此访问权限。
PROCESS_SET_INFORMATION (0X0200) 要设置其优先级类进程有关的某些信息(见
SetPriorityClass)。
PROCESS_SET_QUOTA (0X0100) 所需设置使用SetProcessWorkingSetSize的内存限制。PROCESS_SUSPEND_RESUME (0X0800) 暂停或恢复一个进程所需。
PROCESS_TERMINATE (0X0001) 所需终止使用TerminateProcess的进程。
要打开另一个进程的句柄,并获得完全的访问权限,您必须启用SeDebugPrivilege 的特权。更多的信息,请参阅更改一个令牌中的权限。
CreateProcess函数返回的句柄已PROCESS_ALL_ACCESS 访问过程的对象。在调用OpenProcess函数时,系统将检查对该进程的安全描述符中的DACL 的请求的的访问权限。在调用GetCurrentProcess函数时系统将返回到调用方的DACL 允许的最大访问的pseudohandle。
如果要读取或写入对象的SACL,可以请求权进程对象的ACCESS_SYSTEM_SECURITY 访问权限。更多的信息请参阅访问控制列表(Acl)和SACL 访问权限。
警告有一些注意到在这里的访问权限的进程可以使用它们获得其他的访问权限。就例如进程 A 是否能与PROCESS_DUP_HANDLE 访问的进程B 的句柄它可以复制过程B.的伪句柄这将创建最大访问B.进程的句柄伪句柄的详细信息,请参阅GetCurrentProcess。
受保护的进程
Windows Vista 引入了受保护的进程,以加强对数字权限管理的支持。系统限制对受保护的进程以及受保护的进程的线程的访问。
以下标准访问权限不允许从一个过程,受保护的进程:
删除
READ_CONTROL
WRITE_DAC
WRITE_OWNER
以下的特定访问权限不允许从一个过程,受保护的进程:
PROCESS_ALL_ACCESS
PROCESS_CREATE_PROCESS
PROCESS_CREATE_THREAD
PROCESS_DUP_HANDLE
PROCESS_QUERY_INFORMATION
PROCESS_SET_INFORMATION
PROCESS_SET_QUOTA
PROCESS_VM_OPERATION
PROCESS_VM_READ
PROCESS_VM_WRITE
右的PROCESS_QUERY_LIMITED_INFORMATION 被为了提供对可通过PROCESS_QUERY_INFORMATION 的信息的子集的访问。
有关此主题的意见发送给Microsoft
建立日期:2010 年12 月15 日
易语言
.版本2
.常量PROCESS_QUERY_INFORMATION, "1024"
.常量PROCESS_VM_READ, "16" //这里的16是10进制的.
.常量PROCESS_ALL_ACCESS, "2035711"