Win32 Windowsサービスを開始する StartService

Windowsサービスを開始するには、StartService関数を用いる。



StartService関数のプロトタイプは以下のとおり。

BOOL StartService(
  SC_HANDLE hService,            // サービスのハンドル
  DWORD dwNumServiceArgs,        // 引数の数
  LPCTSTR *lpServiceArgVectors   // 複数の引数からなる 1 つの配列
);



  • 以下は、「iPod Service」を開始するプログラム

  • #include <windows.h>
    #include <stdio.h>
    
    int main()
    {
        SC_HANDLE hSCM = NULL;
        SC_HANDLE hService = NULL;
        LPCTSTR lpszServiceName = TEXT("iPod Service");
    
        hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
        if (hSCM == NULL) {
            printf("OpenSCManager error: %d\n", GetLastError());
            goto EXIT_FUNC;
        }
    
        hService = OpenService(hSCM,
            lpszServiceName,
            SERVICE_START);
    
        if (hService == NULL) {
            printf("OpenService error: %d\n", GetLastError());
            goto EXIT_FUNC;
        }
    
        if (StartService(hService, 0, NULL)) {
            printf("StartService Success\n");
        } else {
            printf("StartService error: %d\n", GetLastError());
        }
    
    EXIT_FUNC:
    
        CloseServiceHandle(hSCM);
        CloseServiceHandle(hService);
    
        return 0;
    }


    注意:このプログラムを実行するには、管理者権限が必要となる場合がある。


  • 参考

  • http://msdn.microsoft.com/ja-jp/library/cc429360.aspx