1

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

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

4

1 回答 1

1

您是否查看了使用 C++ 执行特权操作中的示例?似乎您只需要在使用 GetTokenInformation() 函数后弄清楚哪些令牌是哪些,然后禁用其中一些。

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

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

下面是关于 TOKEN_PRIVILEDGES 结构的细节对于 Priviledges 数组的每个成员,您可以使用LookupPrivilegeName查找权限的名称。

这是特权名称和描述的列表。

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

  • SE_PRIVILEGE_ENABLED
  • SE_PRIVILEGE_ENABLED_BY_DEFAULT
  • SE_PRIVILEGE_REMOVED
  • SE_PRIVILEGE_USED_FOR_ACCESS

在你的情况下,我认为它将主要是第三个。

于 2012-11-08T14:51:31.030 回答