zoukankan      html  css  js  c++  java
  • Windows Service Operations

    Code snippet about some Windows service operation methods. 

    Install Service:

    public static void InstallService(string filepath, string serviceName, string[] options)
            {
                try
                {
                    if (!IsServiceExisted(serviceName))
                    {
                        IDictionary mySavedState = new Hashtable();
                        AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
                        myAssemblyInstaller.UseNewContext = true;
                        myAssemblyInstaller.Path = filepath;
                        myAssemblyInstaller.CommandLine = options;
                        myAssemblyInstaller.Install(mySavedState);
                        myAssemblyInstaller.Commit(mySavedState);
                        myAssemblyInstaller.Dispose();
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception("Install Service Error
    " + ex.Message);
                }
            }

    Uninstall Service:

    public static void UnInstallService(string filepath, string serviceName, string[] options)
            {
                try
                {
                    if (IsServiceExisted(serviceName))
                    {
                        AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
                        myAssemblyInstaller.UseNewContext = true;
                        myAssemblyInstaller.Path = filepath;
                        myAssemblyInstaller.CommandLine = options;
                        myAssemblyInstaller.Uninstall(null);
                        myAssemblyInstaller.Dispose();
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception("UnInstall Service Error
    " + ex.Message);
                }
            }

    Verify Serive Exist or Not:

    public static bool IsServiceExisted(string serviceName)
            {
                ServiceController[] services = ServiceController.GetServices();
                foreach (ServiceController s in services)
                {
                    if (s.ServiceName == serviceName)
                    {
                        return true;
                    }
                }
                return false;
            }

    Start a Service:

    public static void StartService(string serviceName)
            {
                if (IsServiceExisted(serviceName))
                {
                    Console.WriteLine("Start Service: {0}", serviceName);
                    System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
                    if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running &&
                        service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending)
                    {
                        service.Start();
                        for (int i = 0; i < 60; i++)
                        {
                            service.Refresh();
                            System.Threading.Thread.Sleep(1000);
                            if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                            {
                                Console.WriteLine("Service start successfully.");
                                break;
                            }
                            if (i == 59)
                            {
                                Console.WriteLine("Start Service Error
    " + serviceName);
                            }
                        }
                    }
                }

    Stop a Service:

    public static void StopService(string serviceName)
            {
                if (IsServiceExisted(serviceName))
                {
                    Console.WriteLine("Stop Service: {0}", serviceName);
                    System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
                    if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                    {
                        service.Stop();
                        for (int i = 0; i < 60; i++)
                        {
                            service.Refresh();
                            System.Threading.Thread.Sleep(1000);
                            if (service.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
                            {
                                Console.WriteLine("Service stopped successfully.");
                                break;
                            }
                            if (i == 59)
                            {
                                Console.WriteLine("Stop Service Error
    " + serviceName);
                            }
                        }
                    }
                }
            }
        }
  • 相关阅读:
    如何提升程序员的工作效率?
    MacOS 上网络故障诊断
    阅读混淆过的Android代码的确不易
    复旦投毒案落下帷幕
    正确把握深度和广度
    Freemarker的数据模型使用
    xilink se14.7 win10闪退
    浅谈 pid的原理与差异
    win10系统激活
    stm8 同时使用dac和adc 采集异常,电平异常
  • 原文地址:https://www.cnblogs.com/Blackeye286/p/4710131.html
Copyright © 2011-2022 走看看