Vista / 7 de compilación y XP / 2000 problemas de ejecución con OpenProcess en C ++

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

  •  30-09-2019
  •  | 
  •  

Pregunta

He estado usando OpenProcess con derechos PROCESS_ALL_ACCESS para las siguientes funciones: -EnumProcessModules
-GetModuleFileNameEx
-ReadProcessMemory
-WriteProcessMemory
que funciona bien en Windows Vista / 7. Sin embargo, en Windows XP / 2000, no va a abrir el proceso con PROCESS_ALL_ACCESS porque de acuerdo a la biblioteca de MSDN:


El tamaño de la bandera PROCESS_ALL_ACCESS aumentó en Windows Server 2008 y Windows Vista. Si una aplicación compilada para Windows Server 2008 y Windows Vista se ejecuta en Windows Server 2003 o Windows XP / 2000, la bandera PROCESS_ALL_ACCESS es demasiado grande y la función que especifica esta bandera falla con ERROR_ACCESS_DENIED. Para evitar este problema, especifique el conjunto mínimo de derechos de acceso necesarios para la operación. Si es necesario utilizar PROCESS_ALL_ACCESS, _WIN32_WINNT conjunto con el sistema operativo mínimo el blanco de la aplicación (por ejemplo, # define _WIN32_WINNT _WIN32_WINNT_WINXP)

No estoy familiarizado con el uso de #define para configurar el sistema operativo mínimo. Después de probar varias combinaciones de derechos de acceso alternativas para las funciones enumeradas anteriormente, todo ello sin suerte, me pregunto si alguien me puede mostrar cómo definir el sistema operativo mínimo usando #define (el ejemplo anterior no funcionó) y / o que el derecho al proceso sería necesario para esas funciones.

Muchas gracias.

¿Fue útil?

Solución

Para la ubicación de su directiva #include <windows.h> y hacer que se vea como esto:

#define _WIN32_WINNT 0x500   // Target Windows 2000
#include <windows.h>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top