清泛IT社区App Inventor 2 中文社区

搜索

扫码访问移动社区 移动社区,您的掌上技术专家

关注我,精彩不错过! 关注我,精彩不错过!

扫码安装最新版AI伴侣 最新版AI伴侣v2.72

Aia Store .aia 源码一站式解决方案 发布日志AI2连接测试ai2Starter模拟器

开通会员送SVIPApp Inventor 2 拓展有奖征文 VIP会员享专有教程,免费赠送基础版*技术支持服务! AI2入门必读中文文档中文教程IoT专题

查看: 940|回复: 0
打印 上一主题 下一主题

C# 通过代码安装、卸载、启动、停止服务

  • TA的每日心情
    开心
    2024-02-17 18:16
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    546

    主题

    715

    帖子

    1万

    积分

    管理员

    这里没有广告...

    Rank: 9Rank: 9Rank: 9

    积分
    10709
    QQ
    跳转到指定楼层
    楼主
    发表于 2015-10-28 10:36:49 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    1. #region Windows服务控制区

    2.         #region 安装服务
    3.         private void InstallService(string filepath, string serviceName)
    4.         {
    5.             try
    6.             {
    7.                 IDictionary _SavedState = new Hashtable();
    8.                 ServiceController service = new ServiceController(serviceName);
    9.                 string dispName = string.Empty;
    10.                 if (!ServiceIsExisted(serviceName, ref dispName))
    11.                 {
    12.                     // Install Service
    13.                     AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
    14.                     myAssemblyInstaller.UseNewContext = true;
    15.                     myAssemblyInstaller.Path = filepath;
    16.                     myAssemblyInstaller.Install(_SavedState);
    17.                     myAssemblyInstaller.Commit(_SavedState);
    18.                     myAssemblyInstaller.Dispose();
    19.                     // --Start Service
    20.                     // service.Start();
    21.                 }
    22.                 else
    23.                 {
    24.                     if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running && service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending)
    25.                     {
    26.                         service.Start();
    27.                     }
    28.                 }

    29.                 statusMsg.Text = "服务安装成功!";
    30.             }
    31.             catch (Exception ex)
    32.             {
    33.                 statusMsg.Text = "安装服务失败!" + ex.Message;
    34.             }
    35.         }
    36.         #endregion

    37.         #region 卸载windows服务
    38.         private void UnInstallService(string filepath, string serviceName)
    39.         {
    40.             try
    41.             {
    42.                 string dispName = string.Empty;
    43.                 if (ServiceIsExisted(serviceName, ref dispName))
    44.                 {
    45.                     // UnInstall Service  
    46.                     AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
    47.                     myAssemblyInstaller.UseNewContext = true;
    48.                     myAssemblyInstaller.Path = filepath;
    49.                     myAssemblyInstaller.Uninstall(null);
    50.                     myAssemblyInstaller.Dispose();
    51.                 }

    52.                 statusMsg.Text = "服务卸载成功!";
    53.             }
    54.             catch (Exception ex)
    55.             {
    56.                 statusMsg.Text = "卸载服务失败!" + ex.Message;
    57.             }
    58.         }
    59.         #endregion

    60.         #region 判断window服务是否存在
    61.         private bool ServiceIsExisted(string serviceName, ref string dispName)
    62.         {
    63.             ServiceController[] services = ServiceController.GetServices();
    64.             foreach (ServiceController s in services)
    65.             {
    66.                 if (s.ServiceName == serviceName)
    67.                 {
    68.                     dispName = s.DisplayName;
    69.                     return true;
    70.                 }
    71.             }
    72.             return false;
    73.         }
    74.         #endregion

    75.         #region 判断window服务是否启动
    76.         /// <summary>  
    77.         /// 判断某个Windows服务是否启动  
    78.         /// </summary>  
    79.         /// <returns></returns>  
    80.         public static bool IsServiceStart(string serviceName)
    81.         {
    82.             ServiceController psc = new ServiceController(serviceName);
    83.             bool bStartStatus = false;
    84.             try
    85.             {
    86.                 if (!psc.Status.Equals(ServiceControllerStatus.Stopped))
    87.                 {
    88.                     bStartStatus = true;
    89.                 }

    90.                 return bStartStatus;
    91.             }
    92.             catch (Exception ex)
    93.             {
    94.                 throw new Exception(ex.Message);
    95.             }
    96.         }
    97.         #endregion

    98.         #region 启动服务
    99.         private bool StartService(string serviceName)
    100.         {
    101.             bool flag = true;
    102.             string dispName = string.Empty;
    103.             if (ServiceIsExisted(serviceName, ref dispName))
    104.             {
    105.                 System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
    106.                 if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running && service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending)
    107.                 {
    108.                     service.Start();
    109.                     for (int i = 0; i < 60; i++)
    110.                     {
    111.                         service.Refresh();
    112.                         System.Threading.Thread.Sleep(1000);
    113.                         if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
    114.                         {
    115.                             break;
    116.                         }
    117.                         if (i == 59)
    118.                         {
    119.                             flag = false;
    120.                         }
    121.                     }
    122.                 }
    123.             }
    124.             return flag;
    125.         }
    126.         #endregion

    127.         #region 停止服务
    128.         private bool StopService(string serviceName)
    129.         {
    130.             bool flag = true;
    131.             string dispName = string.Empty;
    132.             if (ServiceIsExisted(serviceName, ref dispName))
    133.             {
    134.                 System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
    135.                 if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
    136.                 {
    137.                     service.Stop();
    138.                     for (int i = 0; i < 60; i++)
    139.                     {
    140.                         service.Refresh();
    141.                         System.Threading.Thread.Sleep(1000);
    142.                         if (service.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
    143.                         {
    144.                             break;
    145.                         }
    146.                         if (i == 59)
    147.                         {
    148.                             flag = false;
    149.                         }
    150.                     }
    151.                 }
    152.             }
    153.             return flag;
    154.         }
    155.         #endregion
    156. #endregion
    复制代码

    需要添加以下命名空间:
    using System.ServiceProcess;
    using System.Configuration.Install;


    清泛网 - 专注IT技能提升
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    © 2024 tsingfun.com, Inc.  沪ICP备2020034476号-1  沪公网安备31011702000040号

    GMT+8, 2024-09-20 15:39 , Processed in 0.018953 second(s), 31 queries .