C#启动windows服务的方法浅析

C#启动windows服务的方法是什么呢?来让我们开始吧:

C#启动windows服务的由来:我们知道, 在C#代码中启动一个已经存在的windows服务,我们可以用这样的代码来完成:

 
 
 
  1. //ACPI is an example of service name  
  2.  
  3. System.ServiceProcess.ServiceController  
  4.  
  5.  service = new ServiceController("ACPI");   
  6.  
  7. service.Start(); 

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

 
 
 
  1. using Microsoft.Win32;  
  2.  string keyPath = @"SYSTEM\CurrentControlSet\Services\ACPI";   
  3.  
  4. RegistryKey key = Registry.LocalMachine.OpenSubKey(keyPath, true);  
  5. int val = -1;  
  6. bool bConverted = Int32.TryParse(key.GetValue("Start").  
  7.  
  8. ToString(), out val); if(bConverted){   
  9. if ( val == 4){key.SetValue("Start", 3);  
  10.  }  
  11. }   
  12. System.ServiceProcess.ServiceController   
  13.  
  14. service = new ServiceController("ACPI");   
  15.  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

 
 
 
  1. BOOL ChangeServiceConfig(   
  2.  
  3. SC_HANDLE hService,   
  4.  
  5. DWORD dwServiceType,   
  6.  
  7. DWORD dwStartType,   
  8.  
  9. DWORD dwErrorControl,   
  10.  
  11. LPCTSTR lpBinaryPathName,   
  12.  
  13. LPCTSTR lpLoadOrderGroup,   
  14.  
  15. LPDWORD lpdwTagId,   
  16.  
  17. LPCTSTR lpDependencies,   
  18.  
  19. LPCTSTR lpServiceStartName,   
  20.  
  21. LPCTSTR lpPassword,   
  22.  
  23. LPCTSTR lpDisplayName   
  24.  
  25. );  

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

【编辑推荐】

  1. C#Windows服务程序编写浅析
  2. C#Windows服务程序开发软件功能需求
  3. C#Windows服务程序开发之Windows服务浅析
  4. C#Windows服务程序安装浅析
  5. C#Windows服务程序开发的体会

当前名称:C#启动windows服务的方法浅析
新闻来源:http://www.hantingmc.com/qtweb/news4/366804.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联