在不同域中的远程计算机上启动Windows服务

5

我的电脑在A域中,远程服务器在B域中,我想使用c#或任何其他编程语言或脚本从我的电脑重启服务器上的一个服务。

注意:

  1. 我通过VPN连接到服务器,这意味着我可以手动RDP服务器并手动重启服务。
  2. 我无法通过本地服务窗口下的“连接到其他计算机”操作按钮访问服务器上的服务。
  3. 我拥有对服务器的管理员权限。
  4. 我不能(不允许)向服务器添加任何组件。
  5. 我对远程机器拥有不同的凭据。

1
这个问题可能更适合在服务器故障上提问。 - Davin Tryon
2个回答

3

您首先应该尝试使用 sc 命令来确保您能够使用当前权限和凭据远程启动该服务。如果这个方法可行,可以看一下 System.ServiceProcess.ServiceController

当您说您是远程机器上的管理员时,我假定这意味着您正在使用不同的凭据登录。我不认为其中任何一个将允许您使用其他凭据,即命令将以 Domain A 特权执行,而这些特权很可能不足以完成您要做的事情。


使用ServiceController,我可以访问域中的计算机上的服务(停止/启动/重新启动),但不能访问其他域中的计算机。我有另一个域的不同凭据。我需要使用这些凭据手动在远程计算机上执行任何操作(使用RDP),但不知道如何在Windows表单中完成此操作(不使用.NET中的RDP工具)。 - user1675935
@user1675935:我不确定这个方法是否可行,也没有测试环境可以验证...但你尝试过使用runas命令来启动程序吗?我无法找到在线文档,但我相信它应该是类似于runas /noprofile /netonly /user:<user>@<domain> <program>的形式。 - Brenda Bell
Brenda,它起作用了。我尝试在服务器上显示所有服务,我还没有测试重启或停止服务,但我认为它也应该可以工作。非常感谢。 - user1675935

3

您能使用批处理文件吗?通常我会使用这样的代码:

NET USE \\computername\IPC$ /U:domainname\username password
SC \\computername START service

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接