美图齐众专注资阳网站设计 资阳网站制作 资阳网站建设
资阳网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

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.zsjierui.cn/article/dhhjcse.html

其他资讯