{C}之windows系统服务程序初步

Windows 服务程序编写说明

 

SERVICE_TABLE_ENTRY 结构数组, 这个结构记录了这个服务 程序里面所包含的所有服务的名称和服务的进入点函数

SERVICE_TABLE_ENTRY st[] =

    {

        { szServiceName, (LPSERVICE_MAIN_FUNCTION)ServiceMain },

        { NULL, NULL }

};

StartServiceCtrlDispatcher(st);

/**************************************************************/

//打开服务控制管理器

    SC_HANDLE hSCM = ::OpenSCManager(NULL,NULL, SC_MANAGER_ALL_ACCESS);

         //打开服务

        SC_HANDLE hService =::OpenService(hSCM, szServiceName,SERVICE_QUERY_CONFIG);

         ::CloseServiceHandle(hService);

     ::CloseServiceHandle(hSCM);

     //创建服务

    SC_HANDLE hService =::CreateService(

        hSCM,

szServiceName,

szServiceName,

        SERVICE_ALL_ACCESS,

SERVICE_WIN32_OWN_PROCESS,

        SERVICE_DEMAND_START,

 SERVICE_ERROR_NORMAL,

         szFilePath,NULL, NULL, _T(""), NULL, NULL);

          

::CloseServiceHandle(hService);

//删除服务

SC_HANDLE hService = ::OpenService(hSCM,szServiceName, SERVICE_STOP | DELETE);

  SERVICE_STATUS status;

//停止服务

::ControlService(hService,SERVICE_CONTROL_STOP, &status);

//删除服务

   BOOL bDelete =::DeleteService(hService);

   ::CloseServiceHandle(hService);

 ::CloseServiceHandle(hSCM);

     //注册服务控制

   hServiceStatus =RegisterServiceCtrlHandler(szServiceName, ServiceStrl);

SetServiceStatus(hServiceStatus,&status);

///

void WINAPI ServiceStrl(DWORD dwOpcode)

{

         switch (dwOpcode){}

}

 

 

 

 

 

/**************************************************************/

CreateService(

    SC_HANDLE   hSCManager, //服务控制管理程序维护的登记数据库的句柄,由系统函数OpenSCManager 返回

    LPCWSTR     lpServiceName, //以NULL 结尾的服务名,用于创建登记数据库中的关键字

    LPCWSTR     lpDisplayName, //以NULL 结尾的服务名,用于用户界面标识服务

    DWORD        dwDesiredAccess, //指定服务返回类型

    DWORD        dwServiceType, //指定服务类型

    DWORD        dwStartType, //指定何时启动服务

    DWORD        dwErrorControl, //指定服务启动失败的严重程度

    LPCWSTR     lpBinaryPathName, //指定服务程序二进制文件的路径(可带参数)

    LPCWSTR     lpLoadOrderGroup, //指定顺序装入的服务组名

    LPDWORD     lpdwTagId, //忽略,NULL

    LPCWSTR     lpDependencies, //指定启动该服务前必须先启动的服务或服务组

    LPCWSTR     lpServiceStartName, //以NULL 结尾的字符串,指定服务帐号。如是NULL,则表示使用LocalSystem帐号

    LPCWSTR     lpPassword //以NULL 结尾的字符串,指定对应的口令。为NULL表示无口令。但使用LocalSystem时填NULL

    );

 

 

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值