striker159
Lt. Junior Grade
- Registriert
- Dez. 2008
- Beiträge
- 332
hallo,
erstmal vorweg, c++ programmiere ich noch nicht so lange. dazu benutze ich ms visual studio 2010.
ich möchte mir von einem prozess, dessen processID ich habe, die basisadresse eines moduls holen.
dazu benutze ich diesen code
das problem ist jetzt, dass Module32First false zurück gibt und deshalb garnicht erst die schleife durchlaufen wird.
error code ist 6 , also invalid handle. die processID ist auf jeden fall korrekt, sowohl mein programm als auch der taskmanager geben sie richtig an.
woran kann es dann scheitern?
nunja, das war ein ziemlich doofes rechteproblem.
ich muss mein programm als admin ausführen, dann klappt alles
erstmal vorweg, c++ programmiere ich noch nicht so lange. dazu benutze ich ms visual studio 2010.
ich möchte mir von einem prozess, dessen processID ich habe, die basisadresse eines moduls holen.
dazu benutze ich diesen code
Code:
DWORD GetModuleBase(wchar_t* lpModuleName, DWORD dwProcessId) {
MODULEENTRY32 lpModuleEntry = {0};
HANDLE hSnapShot = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwProcessId );
if(!hSnapShot)
return NULL;
lpModuleEntry.dwSize = sizeof(lpModuleEntry);
cout<<GetLastError()<<endl;
BOOL bModule = Module32First( hSnapShot, &lpModuleEntry );
cout<<GetLastError()<<endl;
while(bModule)
{
if(!wcscmp(lpModuleEntry.szModule, lpModuleName ) )
{
CloseHandle( hSnapShot );
return (DWORD)lpModuleEntry.modBaseAddr;
}
bModule = Module32Next( hSnapShot, &lpModuleEntry );
}
CloseHandle( hSnapShot );
return NULL;
};
das problem ist jetzt, dass Module32First false zurück gibt und deshalb garnicht erst die schleife durchlaufen wird.
error code ist 6 , also invalid handle. die processID ist auf jeden fall korrekt, sowohl mein programm als auch der taskmanager geben sie richtig an.
woran kann es dann scheitern?
Ergänzung ()
nunja, das war ein ziemlich doofes rechteproblem.
ich muss mein programm als admin ausführen, dann klappt alles