Frage

Ich habe mit PROCESS_ALL_ACCESS Rechte für die folgenden Funktionen verwendet Open: -EnumProcessModules
-GetModuleFileNameEx
-ReadProcessMemory
-WriteProcessMemory
das funktioniert auf Windows Vista / 7. Jedoch in Windows XP / 2000, wird es nicht den Prozess öffnet mit PROCESS_ALL_ACCESS weil nach der MSDN-Bibliothek:


Die Größe des PROCESS_ALL_ACCESS Flag erhöht auf Windows Server 2008 und Windows Vista. Wenn eine Anwendung für Windows Server 2008 und Windows Vista kompiliert unter Windows Server 2003 oder Windows XP / 2000 ausgeführt wird, ist die PROCESS_ALL_ACCESS Flagge zu groß und die Funktion dieses Flag Angabe nicht mit ERROR_ACCESS_DENIED. Um dieses Problem zu vermeiden, geben Sie den minimalen Satz von Zugriffsrechten für den Betrieb erforderlich. Wenn PROCESS_ALL_ACCESS verwendet werden muss, Satz _WIN32_WINNT auf das System minimalen Betriebes von der Anwendung gezielt (zB #define _WIN32_WINNT _WIN32_WINNT_WINXP)

Ich bin nicht vertraut mit #define mit dem minimalen Betriebssystem einzustellen. verschiedene Kombinationen von alternativen Zugriffsrechten für die oben genannten Funktionen Nach dem Versuch, alles ohne Glück, frage ich mich, ob jemand zeigen kann mir, wie das minimale Betriebssystem mit #define definieren (das obigen Beispiel hat nicht funktioniert) und / oder welche Prozessrechte würde für diese Funktionen benötigt werden.

Vielen Dank.

War es hilfreich?

Lösung

Finden Sie den Speicherort Ihrer #include <windows.h> Richtlinie und macht es so aussehen:

#define _WIN32_WINNT 0x500   // Target Windows 2000
#include <windows.h>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top