Vista / 7 Compile и XP / 2000 Выпуски выполнения с OpenProcess в C ++

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

  •  30-09-2019
  •  | 
  •  

Вопрос

Я использовал OpenProcess с Process_All_Access для следующих функций: -NUMPROCESSMODULES
-Етмодулефиленамеекс.
-Readprocessmemory
-Маритепроцессмерия
Что отлично работает на Windows Vista / 7. Однако в Windows XP / 2000 он не откроет процесс с помощью Process_all_Access, потому что в соответствии с библиотекой MSDN:


Размер flag process_all_access увеличился на Windows Server 2008 и Windows Vista. Если приложение, скомпилированное для Windows Server 2008 и Windows Vista, запущена на Windows Server 2003 или Windows XP / 2000, флаг Process_All_Acccess слишком велик, и функция, указывающая этот флаг с ошибками с помощью ERROR_ACCESS_DENE. Чтобы избежать этой проблемы, укажите минимальный набор прав доступа, необходимые для операции. Если Process_ALL_ACCESS должен использоваться, установите _win32_winnt в минимальную операционную систему, предназначенную для вашего приложения (например, #define _win32_winnt _win32_winnt_winxp)

Я не знаком с использованием #define, чтобы установить минимальную операционную систему. После пробования нескольких комбинаций прав альтернативного доступа к функциям, перечисленным выше, все без удачи, я спрашиваю, может ли кто-то показать мне, как определить минимальную операционную систему, используя #Define (вышеприведенный пример не работал) и / или какие права будет необходим для этих функций.

Большое спасибо.

Это было полезно?

Решение

Найти местоположение вашего #include <windows.h> Директива и заставить это выглядеть так:

#define _WIN32_WINNT 0x500   // Target Windows 2000
#include <windows.h>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top