//一、安装服务:
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服务,包括基础概念、步骤、代码示例以及相关文档。 一、Windows服务概述 Windows服务是Windows操作系统中的一个重要组成部分,它们通常用于执行长时间运行的任务,如...
在C#编程中,Windows系统服务管理涉及到对操作系统服务的创建、查询、控制以及配置等操作。本项目提供的源代码实现了这些功能,便于开发者在Windows环境下进行系统服务的管理工作。以下将详细介绍源代码中的关键知识...
将 C# 生成的 exe 文件添加到 Windows 服务器的服务需要经过创建 Windows 服务项目、添加安装程序、配置服务安装程序、编写服务代码、编译和安装服务、安装服务、启动服务和卸载服务等步骤。 知识点: * 创建 ...
在C#代码中,你的Windows服务会继承自System.ServiceProcess.ServiceBase类。你需要实现的方法包括: - Dispose:释放资源,包括受控和不受控资源。 - OnStart:处理服务启动事件,通常在这里初始化服务所需的服务...
### C# 创建 Windows 服务:实现系统定时重启功能 在 IT 领域,Windows 服务(Windows Services)是后台运行的应用程序,它们为用户提供了一系列关键功能,如网络连接、打印服务等。与传统的应用程序不同,Windows ...
C#是一种强大的编程语言,它允许开发者与Windows API交互,从而获取并操作这些系统服务的信息。本文将深入探讨如何使用C#来获取Windows系统的服务信息。 首先,我们需要引入`System.ServiceProcess`命名空间,这个...
综上所述,"JybServer"项目涉及了C#编程、Windows服务的创建和管理、服务与UI交互、以及XML文件操作。在实际使用中,应确保服务的安全性,避免不必要的UI交互,并合理使用日志记录以进行有效的故障排查。
本篇文章将详细讲解如何使用C#来开发Windows服务,包括核心概念、代码实现以及如何部署和管理这些服务。 首先,Windows服务的核心特性是它们在系统启动时自动启动,并且可以在没有用户登录的情况下运行。在C#中,...
【标题】"C#仿制windows记事本源代码"涉及的是使用C#编程语言来创建一个类似于Windows操作系统内置的记事本程序的项目。这个项目不仅实现了基本的文字编辑功能,如文本输入、剪切、复制、粘贴、查找、替换等,还特别...
这可能包括测试用例、模拟数据以及验证服务操作结果的代码。 5. **安全性与性能考虑**: 在实际应用中,确保服务的安全性至关重要。应限制服务的权限,避免不必要的网络暴露,同时要处理好错误和异常,以防止服务...
标题中的"C# Windows服务源码"指的是使用C#编程语言编写的用于在Windows操作系统中运行的服务程序的原始代码。Windows服务是一种特殊的后台应用程序,它不依赖于用户界面,可以在系统启动时自动运行,并且能够在没有...
本文主要介绍了使用C#语言编写Windows服务程序的详细过程,从创建工程到编写服务程序的各个步骤,并附上了相应的关键代码。 首先,创建一个Windows Service项目,并将其命名为ServiceTest。然后,添加安装程序,并...
本实例关注的是如何使用C#来创建一个Windows服务,它能够在操作系统启动时自动运行,并执行指定路径下的.exe程序。Windows服务是后台应用程序,它们不依赖用户交互,通常用于执行长期运行的任务或提供系统级别的功能...
【标题】:“C# Windows服务框架” Windows服务框架是一种在Windows操作系统后台运行的应用程序模型,它使得开发者可以创建持续运行的、与用户交互较少的服务。在这个特定的标题中,我们讨论的是一个基于C#编程语言...
【标题】"C# Windows 记事本 源代码" 涉及到的是使用C#编程语言在Microsoft Visual Studio 2010环境下开发的一款简易文本编辑器,类似于我们常见的Windows操作系统自带的“记事本”程序。C#是一种面向对象的、类型...
Windows服务是Windows操作系统中一种特殊的程序,它们可以在启动后自动运行,并且可以在用户登录或注销时继续运行。服务可以被配置为自动启动、手动启动或禁用,而且它们通常具有自己的账户权限,这使得它们能够访问...
本压缩包文件“C#创建Windows服务(代码+说明文档).rar”正是针对这一主题,包含了编写和部署Windows服务的详细步骤以及源代码实例。 首先,我们要了解创建Windows服务的基本步骤: 1. **定义服务类**:使用`System...
在本文中,我们将深入探讨如何使用C#语言创建一个简单的Windows服务项目,以及如何通过`Install.bat`和`Uninstall.bat`脚本来安装、启动和停止这个服务。首先,让我们理解Windows服务的基本概念。 **Windows服务**...
在Asp.net(C#)开发中,创建Windows服务并实现定时执行是一项常见的需求,这主要应用于后台自动化任务,如数据同步、日志清理、定时发送邮件等。下面将详细讲解如何进行这一操作。 首先,我们需要了解Windows服务的...
然后,会深入讲解.NET Framework,这是C#运行时环境,提供了丰富的库和服务,支持开发者构建各种Windows应用程序。 在Windows程序设计方面,本书会涵盖Windows Forms技术,它是构建图形用户界面(GUI)的传统方式。...