Windows Service开发日志四(用程序设置服务的运行状态及启动方式)

本文介绍如何使用C#的ServiceProcess.ServiceController类来控制Windows服务的启动和停止,并通过修改注册表来更改服务的启动类型,包括手动、自动及禁用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 开发了服务,总要开发一个设置界面来开启或停止服务.

服务的启动方式有两种:

1.手动运行:手动运行,则每次都要手动去开启服务,开启了服务后,只要重启计算机,服务又会被停止.

2.自动运行:当服务被设置以自动运行方式安装,安装后服务是不会自动启动的(无论选择自动或手动,服务刚安装完时,状态都是停止的),但重启后服务就会自动启运,就算停止了服务,只要启动状态是自动,那么重启计算机后,服务又会自动运行的.

由于开发的需要,我的设置程序要实现几项功能:

1.可以开启或停止服务.

2.如果选择开启,那么启动类型就要设为自动.

3.如果选择停止,那么启动类型就要设为手动,以免重启后又自动执行.

这也是我写这篇目章的目的.

1.其实要实现这几个功能一点都不难,难就难在相关的资料少.

首先讲讲设置服务运行状态:

用C#的ServiceProcess. ServiceController就可以实现,以下是实现代码

view plaincopy to clipboardprint?
using System.ServiceProcess;  
ServiceController AlarmCon=new ServiceController("AlarmService");  
//获取要控制的服务对象  
 
if (AlarmCon.Status==ServiceControllerStatus.Running)  
{  
   butAlStart.Enabled = false;  
   butAlStop.Enabled = true;  
}  
else 
{  
   butAlStart.Enabled = true;  
   butAlStop.Enabled = false;  

using System.ServiceProcess;
ServiceController AlarmCon=new ServiceController("AlarmService");
//获取要控制的服务对象

if (AlarmCon.Status==ServiceControllerStatus.Running)
{
   butAlStart.Enabled = false;
   butAlStop.Enabled = true;
}
else
{
   butAlStart.Enabled = true;
   butAlStop.Enabled = false;
}
 

如果要设置运行状态只要如下即可

view plaincopy to clipboardprint?
AlarmCon.Start();  
AlarmCon.WaitForStatus(ServiceControllerStatus.Running);  
//等到服务的状态起效才往下执行  
GetAlarmServiceState(); 
AlarmCon.Start();
AlarmCon.WaitForStatus(ServiceControllerStatus.Running);
//等到服务的状态起效才往下执行
GetAlarmServiceState();

2.如何改变服务的启动方式呢,原来是要通过修改注册表来实现

view plaincopy to clipboardprint?
using Microsoft.Win32;  
string keyPath = @"SYSTEM/CurrentControlSet/Services/AlarmService";   
RegistryKey key = Registry.LocalMachine.OpenSubKey(keyPath, true);  
key.SetValue("Start", 2);  
//2:自动启动,3:手动启动,4:禁用 

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/turejackon/archive/2009/01/14/3779993.aspx

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值