2012-04-19 6 views
0

C#コードでどのようにプロセスハンドルとカーネルプロセスのIDを取得できますか?私がプロセスのいくつかを反復しようとすると、win32exceptionが「アクセス拒否」になるのはこれらがカーネルプロセスであることを意味しますか?C#コードでプロセスハンドルとカーネルプロセスのIDを取得する方法は?

私は単純にメモリ内のすべてのカーネルプロセスを見て、MiniDumpWriteDumpを使ってダンプします。

+0

どのプロセスでエラーが発生しますか? – SLaks

+0

"カーネルプロセス"はありません。システムプロセスは、リング0で実行されるすべてのコードの論理的な場所のホルダーに過ぎません。プロセス参照またはIDで行うことはできませんが、あなたは確かにMiniDumpWriteDump()を呼び出すことはできません。 AccessDeniedが唯一の結果になります。 –

+0

応答のためのおかげで、カーネルモードですべてのプロセスをダンプする最良の方法は何ですか? – kuhajeyan

答えて

1

必要なのはこれです:

Process prc = Process.GetProcessesByName("System").FirstOrDefault(); 

あなたはPIDを取得しますが、あなたは、このプロセスハンドルを取得することができなくなります。

+0

Maciej、これはカーネルではなく、プロセスユーザモードを再び得るだけです。私は後で、このダンプがカーネルモードのプログラムにアクセスし、ダンプを取得するシステムドライバモジュールを書くことであることを唯一の方法で知った – kuhajeyan

+0

そうです。この種の情報にアクセスする唯一の方法は、カーネルモードで実行することだと思います。あなたが言及したように、ドライバーのように。実際にはC#では可能ではありません。 –

関連する問題