Vista / 7 di compilazione e XP / 2000 problemi di esecuzione con OpenProcess in C ++

StackOverflow https://stackoverflow.com/questions/3549982

  •  30-09-2019
  •  | 
  •  

Domanda

Ho usato OpenProcess con i diritti PROCESS_ALL_ACCESS per le seguenti funzioni: -EnumProcessModules
-GetModuleFileNameEx
-ReadProcessMemory
-WriteProcessMemory
che funziona bene su Windows Vista / 7. Tuttavia, in Windows XP / 2000, che non si apre il processo con PROCESS_ALL_ACCESS perché, secondo la libreria MSDN:


La dimensione della bandiera PROCESS_ALL_ACCESS aumentato su Windows Server 2008 e Windows Vista. Se un'applicazione compilata per Windows Server 2008 e Windows Vista viene eseguito su Windows Server 2003 o Windows XP / 2000, la bandiera PROCESS_ALL_ACCESS è troppo grande e la funzione specifica questo flag fallisce con ERROR_ACCESS_DENIED. Per evitare questo problema, specificare il set minimo di diritti di accesso necessari per l'operazione. Se PROCESS_ALL_ACCESS deve essere utilizzato, insieme _WIN32_WINNT al sistema operativo minimo di mira dai dell'applicazione (ad esempio, # define _WIN32_WINNT _WIN32_WINNT_WINXP)

Non ho dimestichezza con l'utilizzo di # define per impostare il sistema operativo minimo. Dopo aver provato diverse combinazioni di diritti di accesso alternative per le funzioni sopra elencate, il tutto senza fortuna, mi chiedo se qualcuno mi può mostrare come definire il sistema operativo minimo utilizzando # define (l'esempio di cui sopra non ha funzionato) e / o che i diritti di processo sarebbe necessario per tali funzioni.

Molte grazie.

È stato utile?

Soluzione

Trova la posizione della vostra direttiva #include <windows.h> e farlo sembrare come questo:

#define _WIN32_WINNT 0x500   // Target Windows 2000
#include <windows.h>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top