[Solution] Microsoft Windows 服务(1) C#创建Windows服务
Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这种服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。
开发
0.创建服务 1.安装 2.启动 3.停止 4.卸载 5.监控服务
创建服务:
1. 在c#中创建1个服务很简单,只要继承ServiceBase,重写OnStart和OnStop方法就可以.(最快的是右键新建项)
OnStart方法是服务启动的时候执行的
OnStop方法是服务停止的时候执行的
2. 通常会用System.Timers.Timer做定时任务处理.
安装:
方式一(手动):
InstallUtil:
1. 打开Visual Studio .NET命令提示
2. 改变路径到你项目所在的bin\Debug文件夹位置(如果你以Release模式编译则在bin\Release文件夹)
3. 执行命令“InstallUtil.exe MyWindowsService.exe”注册这个服务,使它建立一个合适的注册项。
方式二(代码):
a.ManagedInstallerClass类:
var filePath = Process.GetCurrentProcess().MainModule.FileName(取当前进程文件路径)
var cmds = new []{filePath};
ManagedInstallerClass.InstallHelper(cmds);
b.(sc命令是用来与服务控制管理器和服务进行通信的命令行程序)
var cmd = "create myserver binpath= \""+程序绝对路径名+"\" displayName= 服务名 start= auto"
Process.Start("sc", cmd);
启动:
方式一(代码):
a.Process.Start("sc", "start 服务名");
方式二(手动):
a.命令提示符中:net start 服务名
b.运行"services.msc",找到服务名,启动服务
停止:
方式一(代码):
a.Process.Start("sc", "stop 服务名");
方式二(手动):
a.命令提示符中:net stop 服务名
b.运行"services.msc",找到服务名,停止服务
卸载:
方式一(手动):
1. 打开Visual Studio .NET命令提示
2. 改变路径到你项目所在的bin\Debug文件夹位置(如果你以Release模式编译则在bin\Release文件夹)
3. 执行命令“InstallUtil.exe /u MyWindowsService.exe”注册这个服务,使它建立一个合适的注册项。
方式二(代码):
Process.Start("sc", "delete 服务名");
监控:
使用ServiceController来获取服务状态或对服务进行控制。
这个类可以获取服务的状态,属性,对服务也可以进行启动,停止操作