C#启动windows服务方法的相关问题分析
- 作者: MrG37088382
- 来源: 51数据库
- 2021-08-15
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#启动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#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
热点文章
团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
0
使用 MSBuild.exe 在发布模式下构建 C# 解决方案
0
当我发布 Web 应用程序时,AfterPublish 脚本不运行
0
构建时 T4 转换的产品仅在下一个构建中使用
0
ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
0
新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
0
如何将条件编译符号(DefineConstants)传递给 msbuild
0
MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
0
NuGet 包还原找不到包,没有源
0
使用 C# 6.0 功能运行 TFS 构建
0
