TOKEN_PRIVILEGES 结构体
来源:互联网 发布:视频格式转换器 mac 编辑:程序博客网 时间:2024/06/06 02:56
原文链接
https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa379630(v=vs.85).aspx
- TOKEN_PRIVILEGES 结构体包含一个令牌的一系列的特权。
typedef struct _TOKEN_PRIVILEGES { DWORD PrivilegeCount; LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
- PrivilegeCount
下面的特权数组的个数
Privileges
LUID_AND_ATTRIBUTES 结构数组。每一个结构包含一个标志特权身份的LUID 以及一个 属性。为了得到特权对应的名称,调用LookupPrivilegeName 函数。
LUID_AND_ATTRIBUTES
typedef struct _LUID_AND_ATTRIBUTES { LUID Luid; DWORD Attributes;} LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES;
该结构仅仅定义了一个LUID 和 关联属性的结构体,这个属性的使用及其含义是此结构体使用的方法相关的。
TOKEN_PRIVILEGES 中可以使用的属性可以是以下值的组合
- Enable By Default 的意思是进程开始的时候就已经被设置了的权限, 如果特权设置ENABLED 但是没有ENABLED_BY_DEFAULT ,进程必须显示使其有效。
SE_PRIVILEGE_USED_FOR_ACCESS 标志在特特权被使用的时候被设置。可以使用此标志进行故障检查。比如,判断我们是否正在设置我们没有用到的特权,或者判断一个系统调用需要什么样的权限。
如果SE_PRIVILEGE_ENABLED 和 SE_PRIVILEGE_REMOVED 都没有被设置,特权在令牌中,没有被移除,但是也没有被实际的使用。可以调用AdjustTokenPrivileges 来使其有效或者移除它。
如果属性为0,特权在令牌中,但是没有被实际使用,没有被移除,没有被默认启用,还没被进程使用。
BOOL SetPrivilege( HANDLE hToken, // token handle LPCTSTR Privilege, // Privilege to enable/disable BOOL bEnablePrivilege // TRUE to enable. FALSE to disable ){ TOKEN_PRIVILEGES tp; LUID luid; TOKEN_PRIVILEGES tpPrevious; DWORD cbPrevious=sizeof(TOKEN_PRIVILEGES); // 得到字符串对应的权限的LUID if(!LookupPrivilegeValue( NULL, Privilege, &luid )) return FALSE; // // 获得原来的权限 // tp.PrivilegeCount = 1; tp.Privileges[0].Luid = luid; tp.Privileges[0].Attributes = 0; AdjustTokenPrivileges( hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), &tpPrevious, &cbPrevious ); if (GetLastError() != ERROR_SUCCESS) return FALSE; // // 设置 // tpPrevious.PrivilegeCount = 1; tpPrevious.Privileges[0].Luid = luid; if(bEnablePrivilege) { tpPrevious.Privileges[0].Attributes |= (SE_PRIVILEGE_ENABLED); } else { tpPrevious.Privileges[0].Attributes ^= (SE_PRIVILEGE_ENABLED & tpPrevious.Privileges[0].Attributes); } AdjustTokenPrivileges( hToken, FALSE, &tpPrevious, cbPrevious, NULL, NULL ); if (GetLastError() != ERROR_SUCCESS) return FALSE; return TRUE;}
阅读全文
0 0
- TOKEN_PRIVILEGES 结构体
- TOKEN_PRIVILEGES
- TOKEN_PRIVILEGES
- TOKEN_PRIVILEGES&LUID_AND_ATTRIBUTES structure
- 结构体
- 结构体
- 结构体
- 结构体
- 结构体
- 结构体
- 结构体
- 结构体
- 结构体
- 结构体
- 结构体
- 结构体
- 结构体
- 结构体
- Elasticsearch对Hbase中的数据建索引实现海量数据快速查询
- intellij idea 的一些奇怪现象
- 省市区三级级联
- 配置nginx使之支持pathinfo
- css写表格 table的高级属性
- TOKEN_PRIVILEGES 结构体
- 如何给你的json对象的某个方法,然后用这个对象的属性输出结果?
- SQL 各种JOIN
- LeetCode#215 Kth Largest Element in an Array
- pycharm 安装
- 【微信小程序开发笔记】--偶遇js深拷贝与浅拷贝问题
- is.finite/is.infinite/is.nan/NA
- BaseAdapter
- 注册校验+三级联动+上传头像