tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
600
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    SpoileD SpoileD ist offline Grünschnabel
    Registriert seit
    Apr 2007
    Beiträge
    2
    Hallo,
    ich habe folgende frage ist es möglich den Pfad eines beliebigen laufenden Prozesses mit hielfe von C aus zulesen?

    Das einzige was ich gefunden habe ist GetModuleFindName() was aber meines wissens nur den Pfad des eigenen Programms zurück gibt.

    Danke für eure Hilfe

    SpoileD
     

  2. #2
    SBX SBX ist offline Rookie
    Registriert seit
    May 2007
    Beiträge
    9
    hier mal 2 funktionen, die ich schon öfter verwendete. beim aufruf von List() werden alle aktiven prozesse und der pfad aus gegeben.

    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    
    BOOL ListProcesses()
    {
        HANDLE hProcessSnap = 0;
        HANDLE hToken;
        PROCESSENTRY32 pe32 = {0};
        DWORD dwPriorityClass;
        BOOL bGotModule = FALSE;
        HANDLE hProcess;
        MODULEENTRY32 me32 = {0};
        hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        if(hProcessSnap == INVALID_HANDLE_VALUE)
            return FALSE;
        pe32.dwSize = sizeof(PROCESSENTRY32);
        if(Process32First(hProcessSnap,&pe32))
        {
            do
            {
                ZeroMemory(&me32,sizeof(MODULEENTRY32));
                hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);
                bGotModule = GetProcessModule(pe32.th32ProcessID, pe32.th32ModuleID, &me32, sizeof(MODULEENTRY32)); 
                dwPriorityClass = GetPriorityClass(hProcess);
                cout<<"File name: "<<pe32.szExeFile<<endl;
                cout<<"Path: "<<me32.szExePath<<endl;
                CloseHandle(hProcess);
            }while(Process32Next(hProcessSnap,&pe32));
        }
        return bGotModule;
    }
    BOOL GetProcessModule(DWORD dwPID, DWORD dwModuleID, LPMODULEENTRY32 lpMe32, DWORD cbMe32)
    {
        BOOL bRet = FALSE;
        BOOL bFound = FALSE;
        HANDLE hModuleSnap = NULL;
        MODULEENTRY32 me32 = {0};
        ZeroMemory(&me32,sizeof(MODULEENTRY32));
        hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);
        if (hModuleSnap == INVALID_HANDLE_VALUE)
            return (FALSE);
        me32.dwSize = sizeof(MODULEENTRY32);
        if (Module32First(hModuleSnap, &me32))
        {
            do
            {
                if (me32.th32ProcessID == dwPID)
                {
                    CopyMemory (lpMe32, &me32, cbMe32);
                    bFound = TRUE;
                }
            }
            while (!bFound && Module32Next(hModuleSnap, &me32));
            bRet = bFound;
        }
        else
            bRet = FALSE;
        CloseHandle(hModuleSnap);
        return bRet;
    }
     

Ähnliche Themen

  1. Speicherbereich eines Prozesses
    Von Ichbinalex im Forum .NET Café
    Antworten: 1
    Letzter Beitrag: 08.06.09, 15:00
  2. Pfad eines Prozesses finden
    Von zacharyy im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 26.02.09, 14:19
  3. Stdout eines Prozesses ermitteln
    Von Hroudtwolf im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 17.11.07, 19:43
  4. Verbindung eines Prozesses überprüfen
    Von nagydaniel im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 16.08.07, 10:24
  5. PID eines Prozesses ermitteln
    Von Caruso_Nix im Forum Java
    Antworten: 6
    Letzter Beitrag: 23.11.04, 13:35