Wie erhalte ich den Anzeigenamen des Dienstes in C ++?

Ich versuche, den Anzeigenamen des ausgeführten Dienstes mit c ++ zu ermitteln. Ich habe versucht, die GetServiceDisplayName-Funktion zu verwenden, aber sie scheint nicht zu funktionieren, nicht sicher, warum.

TTServiceBegin( const char *svcName, PFNSERVICE pfnService, bool *svc, PFNTERMINATE pfnTerm,
int flags, int argc, char *argv[], DWORD dynamiteThreadWaitTime )
{
SC_HANDLE serviceStatusHandle;
DWORD dwSizeNeeded = 0 ;
TCHAR* szKeyName = NULL ;

serviceStatusHandle=OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE ,SC_MANAGER_ALL_ACCESS);

GetServiceDisplayName(serviceStatusHandle,svcName, NULL, &dwSizeNeeded);
if(dwSizeNeeded)
{
    szKeyName = new char[dwSizeNeeded+1];
    ZeroMemory(szKeyName,dwSizeNeeded+1);
    if(GetServiceDisplayName(serviceStatusHandle ,svcName,szKeyName,&dwSizeNeeded)!=0)
    {
        MessageBox(0,szKeyName,"Got the key name",0);
    }


}        

Wenn ich diesen Code ausführe, kann ich den Wert von szKeyName in meinem Debugger nie sehen und er geht in den if-Block für das Meldungsfeld, zeigt aber niemals das Meldungsfeld an. Nicht sicher warum?

Wie kann dies funktionieren, um den Anzeigenamen des Dienstes zu ermitteln, oder auf eine andere / einfachere Weise, um diese Aufgabe auszuführen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage