C#コードでどのようにプロセスハンドルとカーネルプロセスのIDを取得できますか?私がプロセスのいくつかを反復しようとすると、win32exceptionが「アクセス拒否」になるのはこれらがカーネルプロセスであることを意味しますか?C#コードでプロセスハンドルとカーネルプロセスのIDを取得する方法は?
私は単純にメモリ内のすべてのカーネルプロセスを見て、MiniDumpWriteDumpを使ってダンプします。
C#コードでどのようにプロセスハンドルとカーネルプロセスのIDを取得できますか?私がプロセスのいくつかを反復しようとすると、win32exceptionが「アクセス拒否」になるのはこれらがカーネルプロセスであることを意味しますか?C#コードでプロセスハンドルとカーネルプロセスのIDを取得する方法は?
私は単純にメモリ内のすべてのカーネルプロセスを見て、MiniDumpWriteDumpを使ってダンプします。
必要なのはこれです:
Process prc = Process.GetProcessesByName("System").FirstOrDefault();
あなたはPIDを取得しますが、あなたは、このプロセスハンドルを取得することができなくなります。
Maciej、これはカーネルではなく、プロセスユーザモードを再び得るだけです。私は後で、このダンプがカーネルモードのプログラムにアクセスし、ダンプを取得するシステムドライバモジュールを書くことであることを唯一の方法で知った – kuhajeyan
そうです。この種の情報にアクセスする唯一の方法は、カーネルモードで実行することだと思います。あなたが言及したように、ドライバーのように。実際にはC#では可能ではありません。 –
どのプロセスでエラーが発生しますか? – SLaks
"カーネルプロセス"はありません。システムプロセスは、リング0で実行されるすべてのコードの論理的な場所のホルダーに過ぎません。プロセス参照またはIDで行うことはできませんが、あなたは確かにMiniDumpWriteDump()を呼び出すことはできません。 AccessDeniedが唯一の結果になります。 –
応答のためのおかげで、カーネルモードですべてのプロセスをダンプする最良の方法は何ですか? – kuhajeyan