質問

以下の機能にProcess_all_accessの権利を使用してOpenProcessを使用しています:-EnumProcessModules
-getModuleFileNameEx
-readprocessmemory
-WRITEPROCESSMEMORY
Windows Vista/7では正常に動作します。ただし、Windows XP/2000では、MSDNライブラリによると、Process_All_Accessでプロセスを開きません。


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を使用して最小オペレーティングシステムを定義する方法(上記の例は機能しませんでした)および/またはどのプロセス権を定義するかを誰かが私に示すことができるかどうかを尋ねますそれらの機能には必要になります。

どうもありがとう。

役に立ちましたか?

解決

あなたの場所を見つけます #include <windows.h> 指令と次のように見せます:

#define _WIN32_WINNT 0x500   // Target Windows 2000
#include <windows.h>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top