网站建设资讯

NEWS

网站建设资讯

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服务的方法浅析
本文URL:http://cdysf.com/article/dhhjcse.html