`
bluedusk
  • 浏览: 270120 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

c#操作windows服务代码

    博客分类:
  • .Net
阅读更多

//一、安装服务:
private void InstallService(IDictionary stateSaver, string filepath)
        {
            try
            {
                System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController("ServiceName");
                if(!ServiceIsExisted("ServiceName"))
                {
                    //Install Service
                    AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
                    myAssemblyInstaller.UseNewContext = true;
                    myAssemblyInstaller.Path =filepath;
                    myAssemblyInstaller.Install(stateSaver);
                    myAssemblyInstaller.Commit(stateSaver);
                    myAssemblyInstaller.Dispose();
                    //--Start Service
                    service.Start();
                }
                else
                {
                    if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running && service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending)
                    {
                        service.Start();
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("installServiceError\n" + ex.Message);
            }
        }

//二、卸载windows服务:
        private void UnInstallService(string filepath)
        {
            try
            {
                if (ServiceIsExisted("ServiceName"))
                {
                    //UnInstall Service
                    AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
                    myAssemblyInstaller.UseNewContext = true;
                    myAssemblyInstaller.Path = filepath;
                    myAssemblyInstaller.Uninstall(null);
                    myAssemblyInstaller.Dispose();
                }
            }
            catch (Exception ex)
            {
                throw new Exception("unInstallServiceError\n" + ex.Message);
            }
        }

//三、判断window服务是否存在:
        private bool ServiceIsExisted(string serviceName)
        {
            ServiceController[] services = ServiceController.GetServices();
            foreach (ServiceController s in services)
            {
                if (s.ServiceName == serviceName)
                {
                    return true;
                }
            }
            return false;
        }

//四、启动服务:
private void StartService(string serviceName)
        {
            if (ServiceIsExisted(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)
                        {
                            break;
                        }
                        if (i == 59)
                        {
                            throw new Exception(startServiceError.Replace("$s$", serviceName));
                        }
                    }
                }
            }
        }

//五、停止服务:
        private void StopService(string serviceName)
        {
            if (ServiceIsExisted(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)
                        {
                            break;
                        }
                        if (i == 59)
                        {
                            throw new Exception(stopServiceError.Replace("$s$", serviceName));
                        }
                    }
                }
            }
        }
 
// 停止指定的服务
public string StartService(string serviceName)
{
string strRst = null;
ManagementObject mo = this.managementClass.CreateInstance();
mo.Path = new ManagementPath(this.strPath+".Name=\""+serviceName+"\"");
try
{
if((string)mo["State"]=="Stopped")//!(bool)mo["AcceptStop"]
mo.InvokeMethod("StartService",null);
}
catch(ManagementException e)
{
strRst =e.Message;
}
return strRst;
}
// 暂停指定的服务
public string PauseService(string serviceName)
{
string strRst = null;
ManagementObject mo = this.managementClass.CreateInstance();
mo.Path = new ManagementPath(this.strPath+".Name=\""+serviceName+"\"");
try
{
//判断是否可以暂停
if((bool)mo["acceptPause"]&&(string)mo["State"]=="Running")
mo.InvokeMethod("PauseService",null);
}
catch(ManagementException e)
{
strRst =e.Message;
}
return strRst;
}
// 恢复指定的服务
public string ResumeService(string serviceName)
{
string strRst = null;
ManagementObject mo = this.managementClass.CreateInstance();
mo.Path = new ManagementPath(this.strPath+".Name=\""+serviceName+"\"");
try
{
//判断是否可以恢复
if((bool)mo["acceptPause"]&&(string)mo["State"]=="Paused")
mo.InvokeMethod("ResumeService",null);
}
catch(ManagementException e)
{
strRst =e.Message;
}
return strRst;
}
// 停止指定的服务
public string StopService(string serviceName)
{
string strRst = null;
ManagementObject mo = this.managementClass.CreateInstance();
mo.Path = new ManagementPath(this.strPath+".Name=\""+serviceName+"\"");
try
{
//判断是否可以停止
if((bool)mo["AcceptStop"])//(string)mo["State"]=="Running"
mo.InvokeMethod("StopService",null);
}
catch(ManagementException e)
{
strRst =e.Message;
}
return strRst;
}
}
}

分享到:
评论

相关推荐

    C#创建Windows服务(代码+说明文档)

    本文将深入探讨如何使用C#语言来创建Windows服务,包括基础概念、步骤、代码示例以及相关文档。 一、Windows服务概述 Windows服务是Windows操作系统中的一个重要组成部分,它们通常用于执行长时间运行的任务,如...

    C#Windows系统服务管理源代码

    在C#编程中,Windows系统服务管理涉及到对操作系统服务的创建、查询、控制以及配置等操作。本项目提供的源代码实现了这些功能,便于开发者在Windows环境下进行系统服务的管理工作。以下将详细介绍源代码中的关键知识...

    将C#生成的exe添加到windows服务器的服务

    将 C# 生成的 exe 文件添加到 Windows 服务器的服务需要经过创建 Windows 服务项目、添加安装程序、配置服务安装程序、编写服务代码、编译和安装服务、安装服务、启动服务和卸载服务等步骤。 知识点: * 创建 ...

    C#实现Windows服务

    在C#代码中,你的Windows服务会继承自System.ServiceProcess.ServiceBase类。你需要实现的方法包括: - Dispose:释放资源,包括受控和不受控资源。 - OnStart:处理服务启动事件,通常在这里初始化服务所需的服务...

    C#创建Windows服务(Windows Services) 实战之系统定时重启服务-程序开发

    ### C# 创建 Windows 服务:实现系统定时重启功能 在 IT 领域,Windows 服务(Windows Services)是后台运行的应用程序,它们为用户提供了一系列关键功能,如网络连接、打印服务等。与传统的应用程序不同,Windows ...

    C#获取Windows系统服务信息

    C#是一种强大的编程语言,它允许开发者与Windows API交互,从而获取并操作这些系统服务的信息。本文将深入探讨如何使用C#来获取Windows系统的服务信息。 首先,我们需要引入`System.ServiceProcess`命名空间,这个...

    c# windows服务程序

    综上所述,"JybServer"项目涉及了C#编程、Windows服务的创建和管理、服务与UI交互、以及XML文件操作。在实际使用中,应确保服务的安全性,避免不必要的UI交互,并合理使用日志记录以进行有效的故障排查。

    C# Windows服务,实现代码,含详细注释及使用播客

    本篇文章将详细讲解如何使用C#来开发Windows服务,包括核心概念、代码实现以及如何部署和管理这些服务。 首先,Windows服务的核心特性是它们在系统启动时自动启动,并且可以在没有用户登录的情况下运行。在C#中,...

    C#仿制windows记事本源代码

    【标题】"C#仿制windows记事本源代码"涉及的是使用C#编程语言来创建一个类似于Windows操作系统内置的记事本程序的项目。这个项目不仅实现了基本的文字编辑功能,如文本输入、剪切、复制、粘贴、查找、替换等,还特别...

    C#创建windows服务+Form+Web调用服务

    这可能包括测试用例、模拟数据以及验证服务操作结果的代码。 5. **安全性与性能考虑**: 在实际应用中,确保服务的安全性至关重要。应限制服务的权限,避免不必要的网络暴露,同时要处理好错误和异常,以防止服务...

    C#Windows服务源码

    标题中的"C# Windows服务源码"指的是使用C#编程语言编写的用于在Windows操作系统中运行的服务程序的原始代码。Windows服务是一种特殊的后台应用程序,它不依赖于用户界面,可以在系统启动时自动运行,并且能够在没有...

    C#编写Windows服务程序

    本文主要介绍了使用C#语言编写Windows服务程序的详细过程,从创建工程到编写服务程序的各个步骤,并附上了相应的关键代码。 首先,创建一个Windows Service项目,并将其命名为ServiceTest。然后,添加安装程序,并...

    C# 开发windows服务实例

    本实例关注的是如何使用C#来创建一个Windows服务,它能够在操作系统启动时自动运行,并执行指定路径下的.exe程序。Windows服务是后台应用程序,它们不依赖用户交互,通常用于执行长期运行的任务或提供系统级别的功能...

    c# windows服务框架

    【标题】:“C# Windows服务框架” Windows服务框架是一种在Windows操作系统后台运行的应用程序模型,它使得开发者可以创建持续运行的、与用户交互较少的服务。在这个特定的标题中,我们讨论的是一个基于C#编程语言...

    c# windows 记事本 源代码

    【标题】"C# Windows 记事本 源代码" 涉及到的是使用C#编程语言在Microsoft Visual Studio 2010环境下开发的一款简易文本编辑器,类似于我们常见的Windows操作系统自带的“记事本”程序。C#是一种面向对象的、类型...

    C# VS 2010 创建、安装、调试 windows服务(windows service)

    Windows服务是Windows操作系统中一种特殊的程序,它们可以在启动后自动运行,并且可以在用户登录或注销时继续运行。服务可以被配置为自动启动、手动启动或禁用,而且它们通常具有自己的账户权限,这使得它们能够访问...

    C#创建Windows服务(代码+说明文档).rar

    本压缩包文件“C#创建Windows服务(代码+说明文档).rar”正是针对这一主题,包含了编写和部署Windows服务的详细步骤以及源代码实例。 首先,我们要了解创建Windows服务的基本步骤: 1. **定义服务类**:使用`System...

    c#简单的windows服务项目

    在本文中,我们将深入探讨如何使用C#语言创建一个简单的Windows服务项目,以及如何通过`Install.bat`和`Uninstall.bat`脚本来安装、启动和停止这个服务。首先,让我们理解Windows服务的基本概念。 **Windows服务**...

    Asp.net(C#) 创建windows服务并定时执行

    在Asp.net(C#)开发中,创建Windows服务并实现定时执行是一项常见的需求,这主要应用于后台自动化任务,如数据同步、日志清理、定时发送邮件等。下面将详细讲解如何进行这一操作。 首先,我们需要了解Windows服务的...

    C#的windows程序设计

    然后,会深入讲解.NET Framework,这是C#运行时环境,提供了丰富的库和服务,支持开发者构建各种Windows应用程序。 在Windows程序设计方面,本书会涵盖Windows Forms技术,它是构建图形用户界面(GUI)的传统方式。...

Global site tag (gtag.js) - Google Analytics