程序使用令牌和权限

时间:2012-11-08 14:47:43

标签: c++ security methods token

我想创建一个具有有限权限的C ++程序。我在互联网上做了一些研究,发现我必须创建一个令牌,然后使用AdjustTokenPrivileges()方法来改变它的权限。

但是,我不太明白这是怎么做的。有人可以请我提供一个如何创建令牌并禁用其权限的示例吗?谢谢:))

1 个答案:

答案 0 :(得分:1)

您是否在Executing Privileged Operations Using C++查看了示例?看起来你只需要在使用GetTokenInformation()函数后找出哪些令牌,然后禁用其中一些令牌。

[编辑] 更详细地解释一下。

  • 第一次调用GetTokenInformation()可以获得令牌priveledge信息对象的长度,以字节为单位。
  • 然后你实际上在堆上构建了一个这么大的缓冲区。
  • 第二个调用检索令牌信息对象并将其存储在缓冲区中。
  • 然后将缓冲区重新转换为TOKEN_PRIVILEGES *,以便您正确解释它。
  • 然后循环遍历此对象的Privileges成员,并将不同的属性设置为允许。

以下是specifics about the TOKEN_PRIVILEDGES structure。对于Priviledges数组的每个成员,您可以使用LookupPrivilegeName查找权限的名称。

以下是Priviledge names and descriptions的列表。

在您知道它是什么特权之后(即通过检查名称),您可以将Priviledges [i]成员的属性设置为

之一
  • SE_PRIVILEGE_ENABLED
  • SE_PRIVILEGE_ENABLED_BY_DEFAULT
  • SE_PRIVILEGE_REMOVED
  • SE_PRIVILEGE_USED_FOR_ACCESS

在你的情况下,我会重新调查它将主要是第三个。