【发布时间】:2015-06-22 23:56:54
【问题描述】:
情况是一个运行c#代码的客户端系统,启动时我们希望检查并确认运行该系统的windows身份具有某些特定的权限,当前的具体情况是SeSystemtimePrivilege。 我们不希望用户必须是管理员才能启动系统。
目前尝试的路径包括:
WMI 未获得我们所追求的权利集。
LsaEnumerateAccountsWithUserRight 通过 PInvoke - 完全有效,但需要管理员权限才能使用 LsaOpenPolicy。
- 通过 PInvoke 和 LookupPrivilegeName 的 GetTokenInformation 这没有返回所需的结果。相反,它只返回了 5 个令牌特权,但不包括 SeSystemtimePrivilege,尽管它已被明确授予相关用户。 (我认为它只向我展示了来自 GP 的权利?它们与我通过 cmd WhoAmI /priv 检查看到的权利相同。)
- LookupPrivilegeValue 通过 PInvoke 结合 PrivilegeCheck,这似乎也只能访问与 GetTokenInformation 相同的 5 个权限,并且仅在实际启用所述权限时返回 true。
到目前为止,我无法弄清楚如何在我的本地机器上启用此权限来测试这种情况,但我认为除了客户端机器上的默认设置外,我不能依赖它。
我正在寻找更多关于如何在不必拥有管理员权限的情况下获得这些用户权限的想法。
想法?我是否已经用尽了所有选项?不可能吧?
【问题讨论】:
-
谢谢!非常感激。我会记住的。
-
我很确定我有一个可行的解决方案,令牌角度是可行的方法。如果它有效,我将在我完成测试后明天发布我的答案。 (=
标签: c# pinvoke privileges