代码之家  ›  专栏  ›  技术社区  ›  Adrian Fâciu

Win API用户权限C++

  •  1
  • Adrian Fâciu  · 技术社区  · 16 年前

    我想看看用户是否有seloaddriver特权。我得到了液体:

        PLUID pld;
        LookupPrivilegeValue(NULL, SE_LOAD_DRIVER_NAME, pld);
    

    但是现在我不知道如何从pluid中获取bool,说明用户是否拥有特权。我已经读过相关的方法,但它认为这可能是一种直接从pluid值得到这个值的简单方法。

    谢谢

    1 回复  |  直到 16 年前
        1
  •  3
  •   Len Holgate    16 年前

    比这更复杂一点。

    首先,您需要获取进程令牌的特权集(通过调用 GetTokenInformation() )然后扫描从中得到的缓冲区(它是 LUID_AND_ATTRIBUTES 结构)从中得到的流体 LookupPrivilegeValue() . 然后您可以使用 Luid_和_属性 找到并检查 Attributes 包含所需的标志( SE_PRIVILEGE_ENABLED 在你的情况下)。

    请注意,在检查启用的权限时,还应检查 SE_PRIVILEGE_REMOVED 未设置在 属性 你正在检查的;同时拥有 删除了SE_特权 已启用SE U特权 已删除但未启用…