C#启动windows服务方法的相关问题分析

C#启动windows服务的方法都是什么呢?C#启动服务类型为Disabled的windows服务会遇到什么样的问题呢?那么本文就向你介绍C#启动windows服务的方法的相关内容。

C#启动windows服务的方法是什么呢?来让我们开始吧:
C#启动windows服务的由来:我们知道, 在C#代码中启动一个已经存在的windows服务,我们可以用这样的代码来完成:


代码如下:

//ACPI is an example of service name
System.ServiceProcess.ServiceController
service = new ServiceController("ACPI");
service.Start();

C#启动windows服务遇到的问题, 如果服务类型是Disabled, 那么start方法就会引发异常。 一般的做法是先修改服务的启动类型, 然后启动该服务:


代码如下:

using Microsoft.Win32;
string keyPath = @"SYSTEM\CurrentControlSet\Services\ACPI";
RegistryKey key = Registry.LocalMachine.OpenSubKey(keyPath, true);
int val = -1;
bool bConverted = Int32.TryParse(key.GetValue("Start").
ToString(), out val); if(bConverted){
if ( val == 4){key.SetValue("Start", 3);
}
}
System.ServiceProcess.ServiceController
service = new ServiceController("ACPI");
service.Start();

总结一下修改服务的启动方式有两种方法:
C#启动windows服务1. 修改注册表
windows 服务的注册表地址为 :
[\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName]
其中子键Start代表了启动类型. 类如"Start"=dword:00000002
其中2为Automatic, 3为Manul, 4为Disabled
C#启动windows服务2.用API


代码如下:

BOOL ChangeServiceConfig(
SC_HANDLE hService,
DWORD dwServiceType,
DWORD dwStartType,
DWORD dwErrorControl,
LPCTSTR lpBinaryPathName,
LPCTSTR lpLoadOrderGroup,
LPDWORD lpdwTagId,
LPCTSTR lpDependencies,
LPCTSTR lpServiceStartName,
LPCTSTR lpPassword,
LPCTSTR lpDisplayName
);

C#启动windows服务的方法浅析就向你介绍到这里,希望对你学习和了解C#启动windows服务有所帮助。

时间: 2012-12-13

基于C#实现Windows服务状态启动和停止服务的方法

本文以实例形式展示了基于C#实现Windows服务状态启动和停止服务的方法.非常实用.分享给大家供大家参考之用.具体方法如下: 首先先引用: System.ServiceProcess.dll 然后在引用命名空间: using System.ServiceProcess; 建立服务对象: ServiceController sc = new ServiceController("Server"); 服务运行则停止服务: if (sc.Status.Equals(ServiceContr

C#使用windows服务开启应用程序的方法

本文实例讲述了C#使用windows服务开启应用程序的方法.分享给大家供大家参考.具体如下: 使用windows服务开启应用程序,会遇到如下问题 1.使用windows服务开启的应用程序不会显示应用程序界面 解决方法:当安装服务之后,选中服务,点击属性->登录,然后设置登录身份为本地系统账户,并允许服务与桌面进行交互 2.使用的是远程桌面进行查看,不会显示界面 解决方法:不能直接使用mstsc命令进入远程桌面,要使用mstsc /v:192.168.1.10 /admin命令 ,这里192.16

c#创建windows服务(Windows Services)详细步骤

Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称.用Visual C# 创建Windows服务不是一件困难的事,本文就将指导你一步一步创建一个Windows服务并使用它.这个服务在启动和停止时,向一个文本文件中写入一些文字信息. 第一步:创建服务框架 要创建一个新的 Windows 服务,可以从Visual C# 工程中选取 Windows 服务(Windows Service)选项,给工程一个新文件名,然后点击 确定.你可以看到,向导向工程文

C#编写Windows服务实例代码

Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面.这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用.还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务. 使用Microsoft Visual Studio2012可以很方便的创建一个Windo

c# 在windows服务中 使用定时器实例代码

由于最近做自动执行的程序,开始做windows服务程序, 在windows服务中如何使用定时器的时候一直失效, 以前是直接拖入timer控件,但是不能直接运行,后来在网上找了一段程序,好使了. 复制代码 代码如下: //开始事件        protected override void OnStart(string[] args)        {             //定时事件            MyTimer();         } //结束事件        protect

C#开发Windows服务实例之实现禁止QQ运行

本实例主要实现下面三个基本功能 1.C#开发windows服务 2.禁止QQ等程序运行 3.为windows服务创建自动安装程序 下面针对这三个基本功能进行实现 一.C#开发windows服务 Windows服务在VS以前的版本中叫NT服务,在VS.NET启用了新的名称.用C#创建windows服务不是一件困难的事,下页针对服务创建.启动.停止做详细介绍 1.首先在vs中添加一winform程序KillService 2.在解决方案添加新项中添加Windows服务 3.打开服务页面,切换至代码页

C#编写Windows服务程序详细步骤详解(图文)

一.创建一个Windows Service 1)创建Windows Service项目 2)对Service重命名 将Service1重命名为你服务名称,这里我们命名为ServiceTest. 二.创建服务安装程序 1)添加安装程序 之后我们可以看到上图,自动为我们创建了ProjectInstaller.cs以及2个安装的组件. 2)修改安装服务名 右键serviceInsraller1,选择属性,将ServiceName的值改为ServiceTest. 3)修改安装权限 右键servicePr

C#添加Windows服务 定时任务

本文实例为大家分享了C#添加Windows服务的具体方法,供大家参考,具体内容如下 源码下载地址:http://xiazai.jb51.net/201701/yuanma/Windowsservice1(jb51.net).rar 步骤一.创建服务项目. 步骤二.添加安装程序. 步骤三.服务属性设置 [serviceInstaller1]. 4.1 添加定时任务 public partial class SapSyn : ServiceBase { System.Timers.Timer tim

c#创建windows服务入门教程实例

用c#中创建一个windows服务非常简单,与windows服务相关的类都在System.ServiceProcess命名空间下. 每个服务都需要继承自ServiceBase类,并重写相应的启动.暂停.停止等方法. windows服务的相关信息是存放与注册表中的,所以他可以在不需要用户登录的情况下自动运行,在c#中你不需要再直接向注册表中添加信息了,c#提供了服务安装类 ServiceProcessInstaller和ServiceInstaller来实现服务的安装. 首先,用vs创建一个win

c#开发的程序安装时动态指定windows服务名称

这下可把我难住了,难道要 在开发的代码中一个一个地设置想要的名称,然后重新编译,再注册成服务? 但是如果将来又要换个名称呢?再重新设置. 编译.注册一遍?这样操作太麻烦了! 于是我就想能不能通过在安装的时候进行配置,比如加一个xml文件记录要安装的服务的服务名等信息,每次安装前修改该xml文件就可以了. 操作: 1.首先添加一个配置文件到服务主程序的根目录,取名"ServiceSetting.xml": 复制代码 代码如下: <?xml version="1.0&quo

C#使用windows服务发送邮件

最近做了一个使用 C# 写了一个发送邮件的windows 服务,在这里记录一下. 首先使用 Visual Studio 2015 创建一个 windows 服务项目. 然后在设计器上面右击添加安装程序.如下图. 安装好后,选择安装程序设计界面,选择服务和安装程序右击选择属性修改一些属性值. PS:如果不给服务添加安装程序,后面是没法把服务安装至 windows 系统里的. 在数据库创建一个表,用于存储需要发送的邮件信息. create table MainInfo ( MainInfoID in

C#版Windows服务安装卸载小工具

前言  在我们的工作中,经常遇到Windows服务的安装和卸载,在之前公司也普写过一个WinForm程序选择安装路径,这次再来个小巧灵活的控制台程序,不用再选择,只需放到需要安装服务的目录中运行就可以实现安装或卸载. 开发思路 1.由于系统的权限限制,在运行程序时需要以管理员身份运行 2.因为需要实现安装和卸载两个功能,在程序运行时提示本次操作是安装还是卸载  需要输入 1 或 2  3.接下来程序会查找当前目录中的可执行文件并过滤程序本身和有时我们复制进来的带有vhost的文件,并列出列表让操

使用C#创建Windows服务的实例代码

本文介绍了使用C#创建Windows服务的实例代码,分享给大家 一.开发环境 操作系统:Windows 10 X64 开发环境:VS2015 编程语言:C# .NET版本:.NET Framework 4.0 目标平台:X86 二.创建Windows Service 1.新建一个Windows Service,并将项目名称改为"MyWindowsService",如下图所示: 2.在解决方案资源管理器内将Service1.cs改为MyService1.cs后并点击"查看代码&

C#基于Windows服务的聊天程序(1)

本文将演示怎么通过C#开发部署一个Windows服务,该服务提供各客户端的信息通讯,适用于局域网.采用TCP协议,单一服务器连接模式为一对多:多台服务器的情况下,当客户端连接数超过预设值时可自动进行负载转移,当然也可手动切换服务器,这种场景在实际项目中应用广泛. 简单的消息则通过服务器转发,文件类的消息则让客户端自己建立连接进行传输.后续功能将慢慢完善. 自定义协议: 1.新建Windows服务项目 2.修改配置文件添加 <appSettings> <add key="maxQ

C#启动和停止windows服务的实例代码

复制代码 代码如下: <script type="text/javascript">        function showLoading(desc) {            $("body").append("<div id=\"processingdiv\" style=\"display:none;\"><div class=\"popup\"> &l

c#使用windows服务更新站点地图的详细示例

由于公司平台访问人数逐渐增多,公司项目的数据库已经几次出现宕机现象.为减轻数据库压力,我上个月对公司项目做了下调整.把新闻板块提取出来单独一个站点,单独一个数据库.减少了主站点和数据库的负担和压力. 但放在线上一个月,新闻新的发布数量最少已经有500篇左右.百度只收录了70个左右,于是想到可能是没有站点地图造成的.但怎么定时更新站点地图呢? 我尝试使用windows服务来定时更新站点地图. 首先需要了解下几个问题. 1.百度收录的站点地图(sitemap)的格式.详情请查看该链接:查看 目前我只

C#通过创建Windows服务启动程序的方法详解

本文实例讲述了C#通过创建Windows服务启动程序的方法.分享给大家供大家参考,具体如下: 1. 新建一个Windows服务应用程序 创建项目-->Visual C# 左侧的"+"-->Windows -->Windows 服务(右侧模板)-->输入名称,确定创建项目 2. 设置Windows服务的属性(Windows服务里没有窗体,所以点击左侧设计器里空白的地方即可在右侧属性栏里看到属性) 这里属性是控制服务器是否可以停止,暂停,继续等等的操作.根据需要选择

对Python定时任务的启动和停止方法详解

在python中我们可以使用APScheduler进行定时任务. APScheduler的具体编码这里就不介绍了.主要说下在终端中启动和停止任务. 一.运行计划任务的python脚本 如果我们在终端中直接执行的话,关闭终端窗口,Python任务就会中断,Python进程会被杀死,程序将停止运行.可以使用如下命令运行python脚本, python apschedulerscript.py & 这样执行后及时关闭终端窗口,程序依旧运行. 二.停止计划任务的Python脚本 如何停止呢,可使用如下方

Python之使用adb shell命令启动应用的方法详解

一直有一个心愿希望可以用Python做安卓自动化功能测试,在一步步摸索中,之前是用monkeyrunner,但是发现对于控件ID的使用非常具有局限性,尤其是ID的内容不便于区分 具有重复性时,后面又发现Uiautomator可以对resorceId.text.packageName等元素进行定位,也找到了xiaochong这位大神关于uiautomator的封装包,链接如下: https://github.com/xiaocong/uiautomator 做为一个小白,这一切都需要摸索,在克服了

windows系统下C++调用matlab程序的方法详解

前言 之前已经跟大家介绍了在ubuntu系统下C++调用matlab程序的方法,需要的朋友们可以参考这篇文章,本文将给大家介绍关于windows下C++调用matlab程序的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实验平台: matlab R2016b   VS2013 思路: 1. 设置matlab的编译器,使用外部的VC或者gcc等编译器. 2. 编译m文件成dll 3. 设置VS的Include路径和lib链接库的路径 4. 编写C++调用dll 步骤:

php调用自己java程序的方法详解

本文实例讲述了php调用自己的java程序实现方法.分享给大家供大家参考,具体如下: 最开始要装jdk这个就不用说了,我装的是java ee 5+jdk 1.把下载的php-java-bridge_5.2.2_j2ee.zip解压出来,里面有个JavaBridge.war 直接用winrar打开,到WEB-INF/lib/JavaBridge.jar 把这个jar包拷到 你的php目录的ext/下. 2.打开war包,里面有个java的文件夹,把他全部拷到你的PHP项目下,如/demo/java

centos7环境下创建mysql5.6多实例的方法详解

本文实例讲述了centos7环境下创建mysql5.6多实例的方法.分享给大家供大家参考,具体如下: 一.mysql安装目录说明 mysql5.6以二进制安装包安装在/data/mysql56下 数据目录为/data/mysql56/data下 配置文件为/etc/my.cnf下 二.多实例目录说明 /mysql-instance          |-- 3308                   |-- data  #3308实例数据目录          |-- 3309        

laravel5创建service provider和facade的方法详解

本文实例讲述了laravel5创建service provider和facade的方法.分享给大家供大家参考,具体如下: laravel5创建一个facade,可以将某个service注册个门面,这样,使用的时候就不需要麻烦地use 了.文章用一个例子说明怎么创建service provider和 facade. 目标 我希望我创建一个AjaxResponse的facade,这样能直接在controller中这样使用: class MechanicController extends Contr

windows下python安装pip方法详解

1.前提 你要已经安装了 某个 版本的 python, (下载地址 https://www.python.org/downloads/) 安装后,需要配置python.exe 的环境变量,否则在 输入 python指令时,会出现如图错误 配置环境变量 鼠标右键我的电脑  -> 属性 -> 高级系统设置 -> 环境变量 -> 编辑PATH -> 在最后面加上我们的Python安装路径 -> 点击确定 注意:Path 路径最后要加上 分号 :      例如我的路径 C:\

ubuntu系统下C++调用matlab程序的方法详解

前言 最近因为工作的需要在研究C++怎么调用matlab程序,发现网上的资料较少,所以将自己学习的内容总结分享出来,下面话不多说了,来一起看看详细的介绍吧. 实验平台: ubuntu  matlab R2016b   g++ 步骤: 1.    设置matlab的编译器 在命令行窗口下,输入并执行如下命令:mex –setup 在出现的编译器中,选择mex -setup C++ 然后在输入命令:mbuild –setup 同样选择mex -setup C++ -client MBUILD 2. 

PHP的Yii框架中创建视图和渲染视图的方法详解

视图是 MVC 模式中的一部分. 它是展示数据到终端用户的代码,在网页应用中,根据视图模板来创建视图,视图模板为PHP脚本文件, 主要包含HTML代码和展示类PHP代码,通过yii\web\View应用组件来管理, 该组件主要提供通用方法帮助视图构造和渲染,简单起见,我们称视图模板或视图模板文件为视图. 创建视图 如前所述,视图为包含HTML和PHP代码的PHP脚本,如下代码为一个登录表单的视图, 可看到PHP代码用来生成动态内容如页面标题和表单,HTML代码把它组织成一个漂亮的HTML页面.