Question

Je me sers OpenProcess des droits de PROCESS_ALL_ACCESS pour les fonctions suivantes: -EnumProcessModules
-GetModuleFileNameEx
-ReadProcessMemory
-WriteProcessMemory
qui fonctionne très bien sur Windows Vista / 7. Cependant, sous Windows XP / 2000, il ne sera pas ouvrir le processus avec PROCESS_ALL_ACCESS car selon la bibliothèque MSDN:


La taille du drapeau PROCESS_ALL_ACCESS augmenté sur Windows Server 2008 et Windows Vista. Si une application compilée pour Windows Server 2008 et Windows Vista est exécuté sur Windows Server 2003 ou Windows XP / 2000, le drapeau PROCESS_ALL_ACCESS est trop grande et la fonction spécifiant ce drapeau échoue avec ERROR_ACCESS_DENIED. Pour éviter ce problème, spécifiez l'ensemble minimal de droits d'accès nécessaires à l'opération. Si PROCESS_ALL_ACCESS doit être utilisé, ensemble _WIN32_WINNT au système d'exploitation minimum ciblé par votre application (par exemple, #define _WIN32_WINNT _WIN32_WINNT_WINXP)

Je ne suis pas familier avec l'utilisation #define pour définir le système d'exploitation minimum. Après avoir essayé plusieurs combinaisons de droits d'accès alternatifs pour les fonctions énumérées ci-dessus, tous sans chance, je demande si quelqu'un peut me montrer comment définir le système d'exploitation minimum en utilisant define (l'exemple ci-dessus n'a pas fonctionné) et / ou dont les droits de processus seraient nécessaires pour ces fonctions.

Merci.

Était-ce utile?

La solution

Trouver l'emplacement de votre directive #include <windows.h> et la faire ressembler à ceci:

#define _WIN32_WINNT 0x500   // Target Windows 2000
#include <windows.h>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top