モジュールの列挙(C言語)

説明:

現在起動している全てのプロセスを列挙し、各々のプロセスについて、ロードしている全てのモジュールのファイル名を表示する。

キーワード:

EnumProcesses, EnumProcessModules, GetModuleFileNameEx

サンプルコード:

/* 現在起動している全てのプロセス中の全てのモジュールのファイル名を表示 */
void DispAllModules()
{
	DWORD ProcessIDs[1000];
	DWORD ProcessNum;
	HMODULE Modules[1000];
	DWORD ModuleNum;
	char FileName[1000];
	DWORD RetSize;
	DWORD i, j;
	HANDLE hProcess;
	BOOL bResult;

	/* プロセスの一覧と数を取得 */
	EnumProcesses(ProcessIDs, sizeof(ProcessIDs), &RetSize);
	ProcessNum = RetSize / sizeof(DWORD);

	for(i=0; i<ProcessNum; i++) {
		printf("プロセスID: %x\n", ProcessIDs[i]);
		
		hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ProcessIDs[i]);

		if(hProcess == NULL) {
			printf("\tオープン失敗.\n");
		} else {
			/* プロセス中のモジュールの一覧を取得 */
			bResult = EnumProcessModules(hProcess, Modules, sizeof(Modules), &RetSize);
			if(bResult) {
				ModuleNum = RetSize / sizeof(HMODULE);

				/* 各モジュールのファイル名を表示 */
				for(j=0; j<ModuleNum; j++) {
					GetModuleFileNameEx(hProcess, Modules[j], FileName, 1000);
					printf("\t%s\n", FileName);
				}
			} else {
				printf("\tモジュール一覧の取得に失敗.\n");
			}

			CloseHandle(hProcess);
		}
	}
}


(original text:1999/01/06 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。