1

Windowsシステムプロセス(この例ではWindows 7)「csrss.exe」はSYSTEMプロセスとして実行され、pid、コマンドライン、およびイメージパス名を含むプロセスリストを(もちろんプログラムで)取得しようとすると、何も取得されませんコマンド ラインまたはイメージ パス名の値は、Windows では SYSTEM プロセスの情報を取得できないためです (私は信じています)。

SYSTEM プロセスからイメージのパス名を取得する方法はありますか? Windowsは実際にこれを行うことを妨げていますか? 回避策はありますか?

更新: ReadProcessMemory() 関数の呼び出し

[http://msdn.microsoft.com/en-us/library/aa915312.aspx]

4

1 に答える 1

1

これを行う簡単な方法 (ReadProcessMemory よりもはるかに簡単です。どこを見ればよいかを知っていれば可能です) は、CreateToolhelp32Snapshotを使用することです。

TH32CS_SNAPPROCESS 0x00000002

システム内のすべてのプロセスをスナップショットに含めます。プロセスを列挙するには、Process32Firstを参照してください。

QueryFullProcessImageName関数を使用して、32 ビット プロセスから 32 ビット プロセスと 64 ビット プロセスの両方の実行可能イメージの完全な名前を取得できることに注意してください 。

szExeFile プロセスの実行可能ファイルの名前。実行可能ファイルへの完全なパスを取得するには、Module32First関数を呼び出し、返されたMODULEENTRY32構造体のszExePathメンバーを 確認します。ただし、呼び出し元のプロセスが 32 ビット プロセスの場合は、QueryFullProcessImageName 関数を呼び出して、64 ビット プロセスの実行可能ファイルの完全なパスを取得する必要があります。

かなり簡単です。

于 2011-04-15T01:06:19.580 に答える