Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » ServiceName

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.03.2006, 11:42 Uhr
~semra
Gast


Damit ich weiss auf welche Registry Eintrag zugreifen will, brauche ich die ServiceName. Wie kriegt man die Service Name raus, damit ich auf Registry zugreifen kann.


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.03.2006, 12:50 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Wie meinen?
Am Besten erklärst du nochmal genau was du willst...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.03.2006, 14:18 Uhr
~semra
Gast



Zitat von Guybrush Threepwood:
Wie meinen?
Am Besten erklärst du nochmal genau was du willst...


Ich brauche eine Funktion wie getServiceHandle so etwas ähnliches, damit ich eine OPENSERVICE machen kann.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.03.2006, 14:31 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
so ganz versteh ich nicht was Du bezweckst:

C++:
#include <windows.h>
#include <iostream>
using namespace std;

void Err(DWORD);

int main()
{
    SC_HANDLE hHandle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);

    if (NULL == hHandle) {
        Err(GetLastError());
        return -1;
    }
    else {
        cout << "SCM geöffnet." << endl;
    }

    ENUM_SERVICE_STATUS sv;
    
    DWORD dwBytes = 0;
    DWORD dwServices = 0;
    DWORD dwResumedHandle = 0;
    DWORD dwService = SERVICE_WIN32 | SERVICE_DRIVER;

    BOOL ret = EnumServicesStatus(hHandle, dwService, SERVICE_STATE_ALL,
        &sv, sizeof(ENUM_SERVICE_STATUS), &dwBytes, &dwServices, &dwResumedHandle);

    if (!ret) {
        // Buffer setzen
        if (ERROR_MORE_DATA == GetLastError()) {
            DWORD dwBuffer = sizeof(ENUM_SERVICE_STATUS) + dwBytes;
            ENUM_SERVICE_STATUS* pServices = NULL;
            pServices = new ENUM_SERVICE_STATUS [dwBuffer];

            EnumServicesStatus(hHandle, SERVICE_WIN32 | SERVICE_DRIVER, SERVICE_STATE_ALL,
                pServices, dwBuffer, &dwBytes, &dwServices, &dwResumedHandle);
            // Ausgabe
            for (unsigned iIndex = 0; iIndex < dwServices; iIndex++) {
                
                cout << TEXT("Anzeige Name: ") << (pServices + iIndex)->lpDisplayName << TEXT('\t');
                cout << TEXT("Service Name: ") << (pServices + iIndex)->lpServiceName << endl;                                    
            }

            delete [] pServices;
            pServices = NULL;

        }
        else {
            Err(GetLastError());
        }
    }

    if (!CloseServiceHandle(hHandle)) {
        Err(GetLastError());
    }
    else {
        cout << "SCM geschlossen." << endl;
    }
    return 0;
}

// Fehler auswerten
void Err(DWORD pE) {
    
    HLOCAL hLocal = NULL;
    
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER,
        NULL, pE, MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN),(LPTSTR)&hLocal,
        0, NULL);
    
    MessageBox(NULL, (LPCTSTR)LocalLock(hLocal), TEXT("Error"), MB_OK | MB_ICONERROR);
    LocalFree(hLocal);
}


Die Konsole App sollte Dir die Services auflisten.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 09.03.2006 um 14:36 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: