【发布时间】:2013-06-15 22:23:39
【问题描述】:
我有一个用 C# 编写的工具,它可以模拟用户在远程机器上执行管理任务。
我发现在模拟远程计算机的内置管理员帐户或模拟管理员组中的域用户时,将 LOGON32_LOGON_NEW_CREDENTIALS 与 LOGON32_PROVIDER_DEFAULT 一起使用会破坏 UAC。但是,当模拟非内置本地用户(远程计算机的本地用户)时,将返回非提升令牌。在两台机器上创建具有相同凭据的用户并不能缓解问题。
此表显示成功获取提升的令牌以在远程计算机上使用:
graph showing working scenarios http://img521.imageshack.us/img521/3605/fo69.png
所有用户都在管理员组中。
是否有解决此问题的已知解决方案,不涉及关闭 UAC 或在目标计算机上执行任何剧烈操作? 远程计算机由客户控制,不能进行任何修改。假设 UAC 正在并且应该在两端运行。
作为一个兴趣点,但不影响上述问题,使用远程 WMI 时会发现完全相同的行为。
【问题讨论】:
-
在远程机器上,设置是什么:'本地计算机策略\Windows 设置\安全设置\本地策略\安全选项\用户帐户控制:内置管理员帐户的管理员批准模式'调成? (gpedit.msc) 'Disabled' 是默认设置,很可能是您看到的行为的解释。
-
本地和远程机器都在未来客户的控制之下 - 本地或远程都不能修改策略(此工具是安装程序的一部分,而不是从管理员的工作站安装到远程服务器)。
标签: c# uac impersonation