2010-08-23 33 views
0

我一直在使用OpenProcess具有以下功能PROCESS_ALL_ACCESS權利: -EnumProcessModules
-GetModuleFileNameEx
-ReadProcessMemory
-WriteProcessMemory
其中工程在Windows Vista/7上很好。但是,在Windows XP/2000,它不會因爲根據MSDN庫PROCESS_ALL_ACCESS打開過程:Vista/7的編譯和XP/2000的執行問題++


的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到最小操作系統您的應用程序(例如,#定義_WIN32_WINNT _WIN32_WINNT_WINXP)

有針對性的,我不知道如何使用#定義設置最小操作系統。在嘗試了上面列出的功能的替代訪問權限的幾種組合之後,我想知道是否有人可以告訴我如何使用#define定義最低操作系統(上面的例子不起作用)和/或哪些進程權限這些功能將需要。

非常感謝。

回答

1

找到你#include <windows.h>指令的位置,使它看起來像這樣:

#define _WIN32_WINNT 0x500 // Target Windows 2000 
#include <windows.h>