我知道有很多与此类似的问题,但它们都使用以下语法进行连接:
runas /netonly /user:[Domain]\[Account on Domain with Administrator access]
[Program]
我需要从另一台工作组链接的计算机远程启动/停止服务。我的问题是我的计算机没有通过领域语法似乎暗示了这种结构。使用此方法可以打开程序(例如 cmd),但sc \\[Domain\Machine] query
在打开的 cmd.exe 实例上执行操作不起作用,导致拒绝访问错误。
我在 StackOverflow 其他地方找到的另一种替代方法是
net use \\[Machine IP/Host name]\IPC$ user:[Account on Machine with
Administrator Access] [Password]
sc \\[Machine] [Command]
在第二种情况下,如果我正确输入帐户凭据,并且远程计算机上没有其他任何人使用相同的帐户,则第一行有效......
但第二行失败,给出与之前相同的访问被拒绝错误。我已经想尽一切办法来解决这个问题了。
有趣的是,互联网上其他地方似乎根本没有提到确切的情况,也没有人抱怨需要凭证才能使用sc
或net start
远程使用。几乎所有关于 SO 的问题都与确切的语法有关。
我能识别的唯一问题是,如果我的电脑连接到工作组结构而不是领域. 真正的问题是什么?
编辑:需要注意的一点是,当我说 sc \[Machine] start [Service] 并在语法中给出不存在的服务名称时,错误消息如下服务不存在,因为已安装服务,但如果我输入有效的服务名称,则错误是拒绝访问..
编辑2:完全禁用用户访问控制后,它就可以正常工作了。我认为这不是最安全的方法。启用 UAC 后还有其他方法吗?
编辑3:我认为这与使用 cmd 获取远程计算机上的管理权限有关。如何在命令行中实现这一点?
答案1
好的,我找到了问题。显然,至少在 Windows 8、8.1 和 Windows Server 2008 中,UAC 限制了需要更改的管理权限本地管理员经过默认。
我能想到的唯一原因是,如果工作组连接的远程计算机的登录用户有完全相同的由于远程用户使用的凭证(ID 和密码)与家用计算机的凭证相同,因此远程用户将有资格以管理权限在命令行上进行更改,尽管这可能不是控制家用计算机的人的意图。
所以这可能意味着,出于安全原因,已经引入了一个额外的过滤器来将此类活动限制为仅限本地管理员。
即设置
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system\
LocalAccountTokenFilterPolicy] = 1
在注册表中,重新启动计算机后可能会解决问题。鉴于这是一个如此常见的问题,至少在工作组链接的计算机中如此,我不知道为什么这个解决方案在网上不容易找到。
答案2
对于工作组,您需要从处理“浏览器”功能的计算机请求信息。该功能不会实时更新,因此可能非常不稳定。如果您在本地使用与您管理的计算机相同的用户名和密码,则应该没问题,因为请求是在没有浏览器的情况下处理的。