2

を使用して別のプロセスにロードされたモジュールの名前を取得しようとしていますGetModuleFileNameA
dbgHelp を使用してシンボルをロードし、そのモジュール ベース アドレスを取得しましたが、2 つの奇妙なことが起こります
。1.GetModuleFileNameAシステム エラー コード 5 が返されることがあります。アクセスが拒否されました。
2. 間違ったモジュール名を返します。モジュールAにあることがわかっている関数の場合、モジュールBの名前を取得します... :/

誰か助けてくれませんか?
ありがとう:)

4

2 に答える 2

3

ドキュメントをお読みください。GetModuleFileNameのページに表示されます

別のプロセスによってロードされたモジュールのファイルを見つけるには、GetModuleFileNameEx関数を使用します。

GetModuleFileNameは、プロセス内のモジュールに対してのみ意味があります。両方のプロセスがモジュールをロードした場合でも、モジュールは異なるベースアドレスにある可能性があります。GetModuleFileNameガベージを効果的にフィードしています。繰り返しになりますが、GetModuleFileNameExを使用する必要があります

于 2011-04-16T08:17:06.993 に答える
0

プロセスが別のプロセスにアクセスしたい場合は、そのための権限が必要です。つまり、プロセスには昇格された権限が必要であるか、他のプロセスの所有者である必要があります。

間違った名前を取得した場合は、間違ったハンドルを使用した可能性があります。これは、アクセスが拒否される場合がある理由も説明している可能性があります. 間違ったモジュールにハンドルを渡すと、名前を知りたいモジュールにアクセスできる場合でも、そのモジュールにアクセスできない場合があります。

于 2011-04-16T07:03:37.930 に答える