c++ - 在没有管理员权限的情况下获取主域 SID

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

我正在尝试使用 C++ 在 Windows 上获取计算机的主域 SID。我已经使用 LsaQueryInformationPolicyPolicyPrimaryDomainInformation 参数来做到这一点。我已经按照给定的方式为此操作打开了 LSA 策略:

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

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

最佳答案

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

关于c++ - 在没有管理员权限的情况下获取主域 SID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31651820/

相关文章:

c++ - 在 C++ 中使用 String 类的 .substr 获取无效参数

c++ - 我的 OpenGL QQuickItem 没有我想要的大小

c++ - 最小化 C++ 中的分支 - 如果值不为零则递增

windows - 获取可执行的 Windows 8 应用程序

c++ - 我应该将哪个版本的 boost 与 c++ visual-studio-2005 一起使用?

visual-studio - 如何在 VC++ 项目中关闭 Unicode?

c++ - 关于linux shell函数与C函数的关系()

Windows 共享文件夹和 Azure

java - 无法在数据库中保存日期(月/日/年)

c++ - 一旦达到每个值就执行 C++