在我的应用程序中,我使用 ntrights.exe(它是 Windows Resource Kit 的一部分)来授予和撤销特定用户权限。
例如,要授予用户“作为服务器登录”权限,我使用 shell 对象执行以下命令:
ntrights -u User +r SeServiceLogonRight
但是 ntrights 不允许您检查用户是否拥有特定权利。
你能告诉我如何检查用户是否拥有特定权利吗?
更新 问题发布在这里,因为它是我正在编写的 .NET 应用程序的一部分。如果有人知道如何使用代码来完成此操作,请在此处发布。
简短回答:LsaEnumerateAccountRights
不过,我不知道 .NET 是否提供了包装类。
我认为您需要 LsaEnumerateAccountRights()。它没有在 .NET 中公开,但正在使用。使用 Reflector 并查看私有 ServiceProcessInstaller.AccountHasRight 方法。
如果您位于 Active Directory 域中,则可以通过
System.DirectoryServices
进行管理。
您可能会查找的其他内容是
ADSI
和 LDAP
。
对于那些寻找开源命令行工具的人来说,还有这个:
https://github.com/Bill-Stewart/PrivMan
privman -a username -t SeServiceLogonRight
如果用户具有指定的权限/权限,则返回退出代码 1,否则返回 0。