Я использую OpenProcess с правами PROCESS_ALL_ACCESS для следующих функций: -EnumProcessModules
-GetModuleFileNameEx
-ReadProcessMemory
-WriteProcessMemory
, который отлично работает в Windows Vista / 7.Однако в Windows XP / 2000 он не будет открывать процесс с помощью PROCESS_ALL_ACCESS, поскольку согласно библиотеке MSDN:
Размер флага PROCESS_ALL_ACCESS увеличился в Windows Server 2008 и Windows Vista.Если приложение, скомпилированное для Windows Server 2008 и Windows Vista, выполняется в Windows Server 2003 или Windows XP / 2000, флаг PROCESS_ALL_ACCESS слишком велик, и функция, указывающая этот флаг, завершается ошибкой с ERROR_ACCESS_DENIED.Чтобы избежать этой проблемы, укажите минимальный набор прав доступа, необходимый для операции.Если необходимо использовать PROCESS_ALL_ACCESS, установите для _WIN32_WINNT минимальную операционную систему, на которую ориентировано ваше приложение (например, #define _WIN32_WINNT _WIN32_WINNT_WINXP)
Я не знаком с использованием #define для установки минимальной операционной системы.После нескольких комбинаций альтернативных прав доступа для функций, перечисленных выше, все без удачи, я спрашиваю, может ли кто-нибудь показать мне, как определить минимальную операционную систему с использованием #define (приведенный выше пример не работает) и / или какие права процессабудет необходимо для этих функций.
Большое спасибо.