vil*_*pam 2 windows service windows-security service-control-manager
我试图使用以下代码控制远程计算机上的服务:
// Error checking omitted for brevity
HANDLE hToken = NULL;
// user = username with no domain specification
// domain = targetmachine when targetting computer outside of domain
LogonUser(user, domain, password,
LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_WINNT50, &hToken);
ImpersonateLoggedOnUser(hToken);
SC_HANDLE hSc = OpenSCManager(targetmachine,
SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS);
Run Code Online (Sandbox Code Playgroud)
从使用当前登录用户的凭据以及使用其他凭据时,从本地域中的计算机运行并在同一域上定位计算机时,此方法可以正常工作.
但是,当我尝试定位不在任何域上的计算机时,OpenSCManager如果我指定除了SC_MANAGER_CONNECT所需访问之外的任何内容,则调用将失败并拒绝访问.从域外的计算机中定位域计算机(对于作为目标计算机上的本地管理员的域用户,使用用户/域/密码组合).从域外的计算机定位域外的计算机不起作用.
用户/密码是针对目标计算机上管理员组的成员,因此帐户权限不应存在问题.
我已经检查了scmanager安全描述符sc -sdshow scmanager,它对于域计算机和非域计算机是相同的.两者都运行Windows 7 64位.
我也测试过使用psexec,它有相同的症状,即在域计算机之间工作正常但在目标非域计算机时不能.
我还测试了在目标计算机上禁用RPC over TCP并重新启动它,因为这被描述为访问被拒绝错误的可能原因,但这似乎没有帮助.我还测试了在targetmachine上禁用Windows防火墙,但没有变化.
是否需要启用某些设置才能使远程服务配置正常工作?
这似乎是由Windows Vista及更高版本的新安全功能引起的.默认情况下,Windows不会授予远程连接用户完全管理员权限,除非在域中完成.因此,为了使其工作,需要关闭用户帐户控制远程限制,但这当然也会降低计算机的安全性.
感谢Hans Passant建议检查serverfault.com上发布的类似问题.
| 归档时间: |
|
| 查看次数: |
16420 次 |
| 最近记录: |