gpt4 book ai didi

c - win32 api - 如何检查远程机器上的用户权限

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:05 25 4
gpt4 key购买 nike

将用户凭据提供给远程计算机上的本地帐户或域帐户,我如何检查这些凭据在远程主机上授予的用户权限?

我可以查找该帐户的 SID,但我如何知道该帐户是否是远程主机上管理员组的成员?

我可以找到很多检查本地管理员组的示例(例如 How do I check if a user has local admin privileges in win32 ),但看起来 CreateWellKnownSid 只适用于本地主机。

非常欢迎任何线索/指针/代码示例。

编辑:在下面的评论中了解我的问题的更多背景信息。

最佳答案

没有必要执行此步骤来完成您描述的任务,并且出于各种原因执行此步骤并不能确保任务成功。例如,凭据可能对远程计算机具有权限,但可能存在阻止其成功的安全软件。

解决问题的方法是简单地使用给定的凭据执行任务,并检查所有返回值。如果您收到 STATUS_ACCESS_DENIED,则意味着它所说的。如果您没有收到任何错误,那么您的工作就完成了。

检查凭据有助于帮助用户选择适当的凭据。您也可以像检查任何其他更复杂的检查一样检查对 \\machine\admin$ 共享的访问权限。

也就是说,这是按照您的要求进行操作的方法

如果凭据是域凭据,您将需要在 Active Directory 中查找它们。 ADSI 非常适合脚本。存在其他 API。获取用户组的列表。

然后您需要使用 NetXXX api 或 ADSI WinNT 提供程序连接到远程计算机。获取管理员组的成员列表。如果用户的任何域帐户是 Administrators 组的成员,则该用户是成员。

这一切都可以使用 ADSI LDAP 和 WinNT 提供程序从脚本中完成。

备选方案

每个想要运行远程代码的人似乎都认为您必须编写一个服务可执行文件,安装一个服务,然后启动它。

另一种方法是使用任务计划程序服务,如果您拥有管理员凭据,这将非常简单。使用 SCHTASKS.EXE 可以很容易地创建一个以 SYSTEMLOCAL SERVICENETWORK SERVICE 运行的计划任务> 或您拥有其凭据的任何帐户。它可以在没有计划的情况下创建,然后显式启动,或者使用“一次”计划创建以在您喜欢的任何时间运行,例如在接下来的几分钟内运行。

如果你需要在远程机器上运行代码,我强烈推荐 SCHTASKS.EXE 而不是服务方法。

关于c - win32 api - 如何检查远程机器上的用户权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3969056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com