プロセス列挙
すべてのユーザーは、システム内のプロセスの一覧への読み取りアクセス権を持ち、アクティブなプロセスを列挙するさまざまな機能があります。 使用する必要がある関数は、必要なプラットフォームサポートなどの要因によって異なります。
プロセスを列挙するには、次の関数を使用します。
機能 | 説明 |
---|---|
EnumProcesses | システム内の各プロセス オブジェクトのプロセス識別子を取得します。 |
Process32First | システム スナップショットで最初に検出されたプロセスに関する情報を取得します。 |
Process32Next | システム スナップショットに記録された次のプロセスに関する情報を取得します。 |
WTSEnumerateProcesses | 指定したターミナル サーバー上のアクティブなプロセスに関する情報を取得します。 |
toolhelp 関数と EnumProcesses は、 すべてのプロセスを列挙します。 特定のユーザー アカウントで実行されているプロセスを一覧表示するには、 WTSEnumerateProcesses を使用し、ユーザー SID でフィルター処理します。 セッション ID をフィルター処理して、他のターミナル サーバー セッションで実行されているプロセスを非表示にすることができます。
また、TokenUser を使用して OpenProcess、OpenProcessToken、GetTokenInformation を呼び出すことで、列挙関数に関係なく、ユーザー アカウントでプロセスをフィルター処理することもできます。 ただし、アクセス権が付与されていない限り、セキュリティ記述子によって保護されているプロセスを開くことはできません。