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# OleDbDataReader快速数据读取方式(3种)

    C# OleDbDataReader快速数据读取方式(3种)

    这篇文章主要介绍了C# OleDbDataReader快速数据读取方式(3种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Unity实现打砖块游戏

    Unity实现打砖块游戏

    这篇文章主要为大家详细介绍了Unity实现打砖块游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • json格式数据分析工具PageElement类分享(仿Session写法)

    json格式数据分析工具PageElement类分享(仿Session写法)

    json格式数据分析工具PageElement类分享,可像Session一样自由获取Json元素的Key与Value。并可方便与ADO进行交互
    2013-12-12
  • c#基础之数组与接口使用示例(遍历数组 二维数组)

    c#基础之数组与接口使用示例(遍历数组 二维数组)

    本文主要介绍了c#基础知识中的数组与接口使用方法,结合示例,大家一看就明白
    2014-01-01
  • C#创建Windows Service(Windows 服务)的方法步骤

    C#创建Windows Service(Windows 服务)的方法步骤

    本文介绍了如何用C#创建、安装、启动、监控、卸载简单的Windows Service 的内容步骤和注意事项,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • C#飞行棋小程序设计分析

    C#飞行棋小程序设计分析

    这篇文章主要为大家设计分析了C#飞行棋小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Unity Shader实现裁切效果

    Unity Shader实现裁切效果

    这篇文章主要为大家详细介绍了Unity Shader实现裁切效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • c#中datagridview处理非绑定列的方法

    c#中datagridview处理非绑定列的方法

    这篇文章主要介绍了c#中datagridview处理非绑定列的方法,实例分析了C#中datagridview的使用技巧,需要的朋友可以参考下
    2015-06-06
  • Unity3D实现播放gif图功能

    Unity3D实现播放gif图功能

    这篇文章主要为大家详细介绍了Unity3D实现播放gif图功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • C# LINQ的基本使用方法示例

    C# LINQ的基本使用方法示例

    这篇文章主要给大家介绍了关于C# LINQ的基本使用教程,文中通过示例代码介绍的非常详细,对大家学习或者使用C# LINQ具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08

最新评论