Stránka 1 z 1

C/C++ imagename procesu  Vyřešeno

Napsal: 16 úno 2019 17:32
od rhsCZ
Dobrý den mám problém, že do souboru si ukládám PID svého procesu a když dojde k pádu aplikace tak tam pid je furt a jde o to, že pokud je PID stále v souboru tak chci kontrolovat název procesu, abych porovnal jestli neběží již ten samý proces, ale problém nastává, že windows PID používá opakovaně a pro libovolné procesy, tudíž nemůžu dostat informaci z procesů běžících pod SYSTEM, či jiné (ikdyž běží process se zvýšeními oprávněními).
kus kódu
  1. HANDLE proces = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid15);
  2.                 char name[200];
  3.                 char name2[30];
  4.                 char buffer[50];
  5.                 DWORD size = 200;
  6.                 printf("%u and %d", GetLastError(),proces);
  7.                 system("pause");
  8.                 QueryFullProcessImageName(proces, NULL, name, (PDWORD)size);
  9.                 CloseHandle(proces);
  10.                 _splitpath(name, NULL, NULL, name2, NULL);
  11.                 if (buffer != "steamrun.exe" )
  12.                 {
  13.                     HANDLE h = CreateFile((LPCSTR)pid2, GENERIC_READ | GENERIC_WRITE, 0, NULL, 5, FILE_ATTRIBUTE_NORMAL, NULL);
  14.                     WriteFile(h, "000000", 1, NULL, NULL);
  15.                     CloseHandle(h);
  16.                     goto program;
  17.                 }

Problém nastává u QueryFullProcessImageName kde mě to debug hází "Nezpracovaná výjimka na 0x76F53C4E (KernelBase.dll) v steamrun.exe: 0xC0000005: Porušení přístupu v místě čtení 0x000000C8 " a to má získat cestu z svchost.exe.