诸位:请给些参考资料。
我怎么觉得很难查到呀!
用API和ATL编写服务都可以。

解决方案 »

  1.   

    放飞技术网上有4篇文章,我的blog上有一篇文章。
      

  2.   

    MSDN
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/service_functions.asp本来想贴例子上来了,但是找起来有些麻烦,只好说一下思路和主要的函数,参考一下MSDN里面的例子吧。首先要注册service
     OpenSCManager打开service管理器
     CreateService创建service
     CloseServiceHandle关闭service管理器service的主程序
     main中调用StartServiceCtrlDispatcher执行service的主函数
     service的主函数中
       RegisterServiceCtrlHandlerEx注册service控制函数
       各个时点调用report(用SetServiceStatus实现)汇报service当前状态
       OpenSCManager打开service管理器
       OpenService打开service
       service处理
       CloseServiceHandle关闭service
       CloseServiceHandle关闭service管理器
     service控制程序
       接受service管理器的信号(主要是停止信号),然后处理
      

  3.   

    TCHAR szPath[512];
    if(!::GetModuleFileName(NULL,szPath,511))
    {
    return FALSE;
    }
    BOOL ret=FALSE;
    SC_HANDLE scm=NULL;
    SC_HANDLE srv=NULL;
    scm=::OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
    if(scm)
    {
    DWORD* pdwTagID=((m_dwServiceType == SERVICE_KERNEL_DRIVER ||
      m_dwServiceType == SERVICE_FILE_SYSTEM_DRIVER) &&
     (m_dwStartType == SERVICE_BOOT_START ||
      m_dwStartType == SERVICE_SYSTEM_START)) ?
    &m_dwTagID : NULL;
    srv=::CreateService(scm,
    m_lpszServiceName,
    m_lpszDisplayName,
    m_dwDesiredAccess, //SERVICE_ALL_ACCESS
    m_dwServiceType, //SERVICE_WIN32_OWN_PROCESS
    m_dwStartType, //SERVICE_AUTO_START
    m_dwErrorControl, //SERVICE_ERROR_NORMAL
    szPath,
    m_lpszLoadOrderGroup,
    pdwTagID,
    m_lpszDependencies,
    m_lpszStartName,
    m_lpszPassword);
    if(srv)
    {
    ret=TRUE;
    ::CloseServiceHandle(srv);
    }
    ::CloseServiceHandle(scm);
    }
    if(ret)
    {
    RegisterApplicationLog( szPath,
    EVENTLOG_ERROR_TYPE|
    EVENTLOG_WARNING_TYPE|
    EVENTLOG_INFORMATION_TYPE);
    AddToMessageLog(TEXT("服务已经安装"),EVENTLOG_INFORMATION_TYPE);
    }
    return ret;
      

  4.   

    MSDN里的CreateService函数有M$的例子,你不会看吗?!
      

  5.   

    补充一下,只看CreateService函数的例子是不够的。还要看ServiceMain相关系列函数才行