【发布时间】:2020-02-23 15:20:30
【问题描述】:
我正在通过程序创建一个 Windows 用户,并使用 LsaAddAccountRights 为创建的用户提供不同的权限。除其他事项外,接收 ACL 信息所需的权限“SeSecurityPrivilege”。
这适用于许多不同的 Windows 版本:7、8.1x、10.x、Server 2019:用户运行的我的程序可以访问文件的 ACL(使用 C#FileInfo.GetAccessControl())。但这不适用于 Server 2008R2 和 2012R2。 (ATM 我无法测试 Server 2016)。所有服务器都是域控制器。使用“whoami /priv”检查权限显示,SeSecurityPrivilege 已在 Server 2019 上设置(但已禁用),但其他服务器未显示任何权限。
编写一个使用LsaEnumerateAccountRights 查询权限的程序表明用户拥有该权限。检查PrivilegeCheck 显示它们都已被禁用 - 在所有服务器上(甚至是 2019 年,它正在工作)。
检查组策略Group Policy at DC 显示该策略已分配给用户。
我的问题在哪里?为什么这在旧服务器版本上不起作用,而在新版本上起作用?
【问题讨论】:
-
如果用户有权限但不在
whoami /priv列表中(启用或禁用),那么当用户登录时策略会将其过滤掉。尝试通过“以管理员身份运行”来提升用户。但是,如果权限已明确分配给用户而不是从管理员组间接获得,则需要提升是出乎意料的。
标签: windows winapi permissions