在从c#代码安装之前检查是否已安装Windows服务

时间:2013-04-04 14:55:25

标签: c# windows-services

我正在学习Windows服务 我使用安装项目安装了Windows服务 对Windows服务中的代码进行了更改 现在在项目安装程序的构造函数方法中,我正在检查是否已经通过

安装了sercvice
 ServiceController[] sc = ServiceController.GetServices();
        foreach (ServiceController service in sc)
            if (service.ServiceName == "VService") { flag = false; break; }
            else flag = true;
        if (flag)
        {
            ServiceInstaller ServiceInstallerObj = new ServiceInstaller();
            InstallContext Context = new InstallContext();
            ServiceInstallerObj.Context = Context;
            ServiceInstallerObj.ServiceName = "VService";
            ServiceInstallerObj.Uninstall(null);
        }

但是我猜这不是卸载Windows服务的原因当我在属性窗口中更改安装项目的版本并运行在项目构建时生成的设置时出现错误,导致服务无法启动因为它已经在运行,任何机构都可以通过这个或其他方式来解决这个问题。感谢

2 个答案:

答案 0 :(得分:0)

你会想要使用这样的代码:

using System.ServiceProcess;

ServiceController sc = new ServiceController(SERVICENAME);

switch (sc.Status)
{
    case ServiceControllerStatus.Running:
        return "Running";
    case ServiceControllerStatus.Stopped:
        return "Stopped";
    case ServiceControllerStatus.Paused:
        return "Paused";
    case ServiceControllerStatus.StopPending:
        return "Stopping";
    case ServiceControllerStatus.StartPending:
        return "Starting";
    default:
        return "Status Changing";
}

状态标志将告诉您服务正在运行。

答案 1 :(得分:0)

ManagedInstallerClass.InstallHelper(new[] { "/u", Assembly.GetExecutingAssembly().Location });