【问题标题】:Getting primary domain SID without admin privileges在没有管理员权限的情况下获取主域 SID
【发布时间】:2015-07-27 11:24:23
【问题描述】:

我正在尝试使用 C++ 在 Windows 上获取计算机的主域 SID。我已经设法使用LsaQueryInformationPolicyPolicyPrimaryDomainInformationparameter 来做到这一点。我已经为此操作打开了 LSA 政策:

auto lsaStatus = LsaOpenPolicy(Server, &ObjectAttributes, GENERIC_READ | POLICY_VIEW_LOCAL_INFORMATION, &PolicyHandle);

不幸的是,使用LSAOpenPolicy 需要管理员权限才能运行,而对于我正在处理的项目,它不能,因为大多数用户不会拥有它。我的问题是 - 有什么方法可以在不调用管理员权限的情况下获取当前计算机的主域 SID?如果有,我应该如何使用 Visual C++/MFC 来做到这一点?

【问题讨论】:

  • 也许 GetComputerObjectName 后跟 LookupAccountName 和 GetWindowsAccountDomainSid?

标签: c++ windows visual-c++ dns sid


【解决方案1】:

我已经找到了解决这个问题的方法。原来我基于 MSDN 上不正确的 API 描述做出了错误的假设。 正如我们所读到的hereLsaOpenPolicy 似乎需要管理员权限,而关于Access Masks 的文章没有说也没有引导我到任何可以找到所需权限信息的地方。但是感谢堆栈溢出用户TripShock 和他对类似主题here 的评论,我发现实际上仅使用POLICY_VIEW_LOCAL_INFORMATION 访问标志不会调用管理员权限。在我的程序和虚拟机中测试,结果是正确的。

【讨论】:

    猜你喜欢
    • 2018-07-05
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 2012-01-01
    • 1970-01-01
    相关资源
    最近更新 更多