从另一台计算机启动服务

时间:2011-02-03 14:47:07

标签: vb.net service remote-access

我有一个项目,我们希望在其中执行以下操作:

  • 安装执行多项任务的服务。这将放在计算机A和B
  • 另一台计算机C作为证人;
  • 刚开始时,只有A正在运行,因为它执行的工作无法复制;
  • 如果A失败,那么B必须开始。 C应该是验证是否正在运行的那个;
  • Sholud失败后返回,然后B仍在运行且A处于备用状态;
  • B应该失败,C启动A服务,
  • 等等。

是否有可能,如果是这样的话? A和B都有一个SQL Server 2008,但这部分由我们处理。

非常感谢。

编辑:我尝试停止服务(我知道它正在运行)并且似乎无法正常工作:

    Dim path As ManagementPath = New ManagementPath
    path.Server = System.Environment.MachineName
    path.NamespacePath = "root\CIMV2"
    path.RelativePath = "Win32_service.Name='" + strServiceName + "'"
    Dim service As ManagementObject = New ManagementObject(path)
    Dim temp As ManagementBaseObject = service.InvokeMethod("StopService", Nothing, Nothing)

Dim path As ManagementPath = New ManagementPath path.Server = System.Environment.MachineName path.NamespacePath = "root\CIMV2" path.RelativePath = "Win32_service.Name='" + strServiceName + "'" Dim service As ManagementObject = New ManagementObject(path) Dim temp As ManagementBaseObject = service.InvokeMethod("StopService", Nothing, Nothing)

在这种情况下,strServiceName是“CommunicationInterface”,这是我最近手动添加和启动的服务。

我在Windows 7下运行。

2 个答案:

答案 0 :(得分:1)

只需将服务设置为不自动启动,然后让C计算机根据需要使用WMI类Win32_Service启动它们。您还可以使用此类来查询服务是否正在运行。

查看StartServiceStopService方法以及State属性。

以下是一些示例代码:Service Management in VB.NET

答案 1 :(得分:1)

你应该研究Windows Server 2008 Failover Clusters。从该页面:

  

故障转移群集是一组   有效的独立电脑   一起增加可用性   的应用程序和服务。该   群集服务器(称为节点)是   通过物理电缆连接   软件。如果是其中一个集群节点   失败,另一个节点开始提供   服务(称为故障转移的过程)。   用户体验至少   服务中断。