WIn32API Windowsサービスのサービス名から表示名を取得する

サービス名から表示名を取得するには、GetServiceDisplayName関数を用いる。

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

BOOL GetServiceDisplayName(
  SC_HANDLE hSCManager,  // SCM データベースのハンドル
  LPCTSTR lpServiceName, // サービス名
  LPTSTR lpDisplayName,  // 表示名
  LPDWORD lpcchBuffer    // 表示名バッファのサイズ
);


  • aspnet_stateサービスの表示名を取得するサンプルプログラム
  • #include <windows.h>
    #include <stdio.h>
    #include <locale.h>
    
    int main()
    {
        SC_HANDLE hSCM;
        TCHAR lpDisplayName[512];
        DWORD dwBytesNeeded;
        
        setlocale(LC_ALL, setlocale(LC_ALL, ""));//Unicode文字列をコンソールに表示させるため
    
        hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_ENUMERATE_SERVICE);
        if (hSCM == NULL) {
            return 1;
        }
    
        dwBytesNeeded = sizeof(lpDisplayName)/sizeof(lpDisplayName[0]);
    
        GetServiceDisplayName(hSCM, TEXT("aspnet_state"), lpDisplayName, &dwBytesNeeded);
    
        _tprintf(TEXT("%s\n"), lpDisplayName);
    
        CloseServiceHandle(hSCM);
    
        return 0;
    }


  • 実行結果
  • ASP.NET 状態サービス


  • 参考

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