注册和卸载windows服务进程

                                                注册和卸载windows服务进程

     一。注册并且启动服务

      1。调用 OpenSCManager 打开 SCM 也就是服务控制管理器

 

      2.  调用 CreateService 创建服务

 

      3.  调用 StartService 启动服务

 

      创建并且启动服务的代码:

      

       #define ProcessPath _T("D://StartServec.exe") int _tmain(int argc, _TCHAR* argv[]) { //初始化系统服务管理器SCM SC_HANDLE sc_handle_manager=OpenSCManager(NULL,SERVICES_ACTIVE_DATABASE,SC_MANAGER_ALL_ACCESS); if (sc_handle_manager==NULL) { cout<<"初始化系统服务管理器SCM失败"<<endl; return 1; } else { cout<<"初始化系统服务管理器SCM成功"<<endl; } //创建系统服务 SC_HANDLE sc_handle_service=CreateService(sc_handle_manager, _T("MyService"), _T("MyService"), SC_MANAGER_ALL_ACCESS|GENERIC_ALL, SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS, SERVICE_DEMAND_START, SERVICE_ERROR_IGNORE, ProcessPath, NULL, NULL, NULL, NULL, NULL ); //启动服务 if (StartService(sc_handle_service,0,NULL)) { cout<<"启动服务成功"<<endl; } else { cout<<"启动服务失败"<<endl; } //关闭ServiceHandle CloseServiceHandle(sc_handle_service); return 0; }

 

 

      二。卸载服务进程

      1.调用 OpenSCManager 打开 SCM 也就是服务控制管理器

      2.调用 OpenService 打开已经被注册的服务进程

      3.调用  QueryServiceStatus,如果服务正在运行,

         调用  ControlService  停止服务的运行

      4.调用  DeleteService   卸载服务

 

     卸载服务的代码如下:

     #define ProcessPath _T("D://StartServec.exe") int _tmain(int argc, _TCHAR* argv[]) { //初始化系统服务管理器SCM SC_HANDLE sc_handle_manager=OpenSCManager(NULL,SERVICES_ACTIVE_DATABASE,SC_MANAGER_ALL_ACCESS); if (sc_handle_manager==NULL) { cout<<"初始化系统服务管理器SCM失败"<<endl; return 1; } else { cout<<"初始化系统服务管理器SCM成功"<<endl; } SC_HANDLE sc_handle_service; SERVICE_STATUS status; sc_handle_service=OpenService(sc_handle_manager, _T("MyService"), SC_MANAGER_ALL_ACCESS|GENERIC_ALL ); if (sc_handle_service==NULL) { cout<<"打开服务失败"<<endl; return 1; } else { cout<<"打开服务成功"<<endl; } //查询服务状态 if (QueryServiceStatus(sc_handle_service,&status)) { if (status.dwCurrentState==SERVICE_RUNNING) { //停止服务 if (ControlService(sc_handle_service,SERVICE_CONTROL_STOP,&status)) { cout<<"停止服务成功"<<endl; } else { cout<<"停止服务失败"<<endl; } } } //卸载服务 if (DeleteService(sc_handle_service)) { cout<<"卸载服务成功"<<endl; } else { cout<<"卸载服务失败"<<endl; } //关闭ServiceHandle CloseServiceHandle(sc_handle_service); return 0; }

 

 

 

 

      

你可能感兴趣的:(windows,manager,service,null,database,Access)