发现网上很不和这相关的信息。
服务,好你系统服务。他里边干些什么呢?
怎么和程序交互呢?

解决方案 »

  1.   

    服务的权限比较高,可以随系统一起启动。服务于程序交互可以是RPC/命名管道等方式。
      

  2.   

    本质上就是一个随系统一起启动和终止的程序。也没啥特别的。
    要说特别的,就是一般以SYSTEM用户启动,因此权限比一般程序高一些;还有不跟任何桌面绑定,也就是说,只要系统起来了,它就运行,不像其它一些随用户登陆而运行程序在用户登陆后才运行。
      

  3.   

    MSDN上的例子,你去看看吧,其实进程的映像就是PE可执行程序罢了,只是向系统里面注册了服务罢了
    #include <windows.h>
    #include <stdio.h>#define SVCNAME TEXT("SvcName")//
    // Purpose: 
    //   Installs a service in the SCM database
    //
    // Parameters:
    //   None
    // 
    // Return value:
    //   None
    //
    VOID SvcInstall()
    {
        SC_HANDLE schSCManager;
        SC_HANDLE schService;
        TCHAR szPath[MAX_PATH];    if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )
        {
            printf("Cannot install service (%d)\n", GetLastError());
            return;
        }    // Get a handle to the SCM database. 
     
        schSCManager = OpenSCManager( 
            NULL,                    // local computer
            NULL,                    // ServicesActive database 
            SC_MANAGER_ALL_ACCESS);  // full access rights 
     
        if (NULL == schSCManager) 
        {
            printf("OpenSCManager failed (%d)\n", GetLastError());
            return;
        }    // Create the service.    schService = CreateService( 
            schSCManager,              // SCM database 
            SVCNAME,                   // name of service 
            SVCNAME,                   // service name to display 
            SERVICE_ALL_ACCESS,        // desired access 
            SERVICE_WIN32_OWN_PROCESS, // service type 
            SERVICE_DEMAND_START,      // start type 
            SERVICE_ERROR_NORMAL,      // error control type 
            szPath,                    // path to service's binary 
            NULL,                      // no load ordering group 
            NULL,                      // no tag identifier 
            NULL,                      // no dependencies 
            NULL,                      // LocalSystem account 
            NULL);                     // no password 
     
        if (schService == NULL) 
        {
            printf("CreateService failed (%d)\n", GetLastError()); 
            CloseServiceHandle(schSCManager);
            return;
        }
        else printf("Service installed successfully\n");     CloseServiceHandle(schService); 
        CloseServiceHandle(schSCManager);
    }
      

  4.   

    我做了一个程序,然后安装为服务,但是服务不能启动...是Win32程序,用SDK的。
      

  5.   

    服務跟一般的程序不是一樣的 一般的程序是不能注冊成服務的 服務程序的入口都不是WinMain 看msdn吧