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

 更新时间:2012年12月16日 14:47:26   作者:  
C#启动windows服务的方法都是什么呢?C#启动服务类型为Disabled的windows服务会遇到什么样的问题呢?那么本文就向你介绍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服务有所帮助。

相关文章

  • C#多线程异步执行和跨线程访问控件Helper

    C#多线程异步执行和跨线程访问控件Helper

    这篇文章介绍了C#多线程异步执行和跨线程访问控件Helper,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#数据结构与算法揭秘二

    C#数据结构与算法揭秘二

    上文对数据结构与算法,有了一个简单的概述与介绍,这篇文章,我们介绍一中典型数据结构——线性结构
    2012-10-10
  • C#调用百度翻译API实现一个翻译功能

    C#调用百度翻译API实现一个翻译功能

    一直喜欢用Google Translate API进行在线翻译,但是服务越来越慢这篇文章,所以只能换一个了,主要给大家介绍了关于C#调用百度翻译API实现一个翻译功能的相关资料,需要的朋友可以参考下
    2021-06-06
  • C#实现异步连接Sql Server数据库的方法

    C#实现异步连接Sql Server数据库的方法

    这篇文章主要介绍了C#实现异步连接Sql Server数据库的方法,涉及C#中await方法的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • 举例说明Java多线程编程中读写锁的使用

    举例说明Java多线程编程中读写锁的使用

    这篇文章主要介绍了举例说明Java多线程编程中读写锁的使用,文中的例子很好地说明了Java的自带读写锁ReentrantReadWriteLock的使用,需要的朋友可以参考下
    2016-02-02
  • C#中单例的实现方法

    C#中单例的实现方法

    这篇文章主要介绍了C#中单例的实现方法,以实例形式分析了C#中单例的原理与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • C#操作SQLite数据库方法小结(创建,连接,插入,查询,删除等)

    C#操作SQLite数据库方法小结(创建,连接,插入,查询,删除等)

    这篇文章主要介绍了C#操作SQLite数据库方法,包括针对SQLite数据库的创建,连接,插入,查询,删除等操作,并提供了一个SQLite的封装类,需要的朋友可以参考下
    2016-07-07
  • C#实现字符串与图片的Base64编码转换操作示例

    C#实现字符串与图片的Base64编码转换操作示例

    这篇文章主要介绍了C#实现字符串与图片的Base64编码转换操作,结合实例形式分析了C#针对base64编码与图片的相互转换操作技巧,需要的朋友可以参考下
    2017-06-06
  • C#中txt数据写入的几种常见方法

    C#中txt数据写入的几种常见方法

    这篇文章主要给大家介绍了关于C#中txt数据写入的几种常见方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • C#如何根据Model字段名称自动匹配并替换值

    C#如何根据Model字段名称自动匹配并替换值

    这篇文章主要为大家详细介绍了如何使用 C# 反射机制实现一个灵活的模板引擎,能够根据 Model 字段名称自动匹配并替换模板中的占位符,需要的可以了解下
    2025-04-04

最新评论