问题描述
我正在编写一个远程管理工具,该工具可以向网络中其他计算机上的用户授予和撤消管理员权限。
我有此配置:
- 具有两个管理用户的远程计算机(machine1):
- 本地管理员:adminA
- 具有管理权限的域用户:domA.com \ adminB
- 运行管理工具的计算机(machine2),运行用户不是来自domA.com域
- 域用户domA \ adminC,当前不是machine1上的管理员
我希望授予domA.com \ adminC用户的管理员权限,并将凭据授予远程计算机上的本地admin用户。
在此过程中,我可以使用advapi32.dll LogonUser
方法中的令牌在远程计算机上模拟本地管理员。在模拟的上下文中,我可以使用DirectoryEntry
查找远程计算机的管理员组(使用Sid)。从那里,我可以Invoke
Add
/ Remove
操作使用路径WinNT://domA.com/adminC
添加或删除域用户。
再次-与远程计算机上的模拟的本地管理员配合使用,不是domA.com用户。
但是,如果我想使用PrincipalContext
,GroupPrincipal
和UserPrincipal
来查询此域用户权限,请在远程管理组中添加或删除它-我无法这样做:由于没有本地用户,因此无法启动Domain
PrincipalContext,因为我正在使用本地用户,因此无法获取其UserPrincipal
来添加管理员GroupPrincipal
。
这符合Windows的行为-如果我使用本地管理员通过RDP登录到远程计算机,并尝试将域帐户添加到其管理员组,则需要提供域凭据。
是否可以使用PrincipalContext添加域用户而不指定域用户的凭据(DirectoryEntry允许的方式)?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)