GetProcessImageFileNameで、そのプロセスのプロセス名というか、実行ファイルのパスを取得できる。
GetProcessImageFileNameA function (psapi.h) - Win32 apps | Microsoft Docs
C++でプロセス名からプロセスIDを取得する - 備忘録
GetProcessImageFileName()で取得できるパス名について – プログラミング – Home
最初、QueryFullProcessImageNameを使ってたのだが、どうも失敗する。
しかもなぜかERROR_INSUFFICIENT_BUFFERで。
管理者権限かなとも思ったが、関係ない模様。
なので、
GetProcessImageFileNameでやってみた。
sizeof(dwProcessIds) = 4096 cbNeeded = 196 dwNum = 49 dwProcessIds[0] = 0, OpenProcess failed! dwProcessIds[1] = 4, OpenProcess failed! dwProcessIds[2] = 236, OpenProcess failed! dwProcessIds[3] = 308, OpenProcess failed! dwProcessIds[4] = 356, OpenProcess failed! dwProcessIds[5] = 364, OpenProcess failed! dwProcessIds[6] = 392, OpenProcess failed! dwProcessIds[7] = 452, OpenProcess failed! dwProcessIds[8] = 460, OpenProcess failed! dwProcessIds[9] = 468, OpenProcess failed! dwProcessIds[10] = 556, OpenProcess failed! dwProcessIds[11] = 632, OpenProcess failed! dwProcessIds[12] = 716, OpenProcess failed! dwProcessIds[13] = 764, OpenProcess failed! dwProcessIds[14] = 800, OpenProcess failed! dwProcessIds[15] = 840, OpenProcess failed! dwProcessIds[16] = 280, OpenProcess failed! dwProcessIds[17] = 1056, OpenProcess failed! dwProcessIds[18] = 1088, OpenProcess failed! dwProcessIds[19] = 1208, OpenProcess failed! dwProcessIds[20] = 1348, OpenProcess failed! dwProcessIds[21] = 1380, OpenProcess failed! dwProcessIds[22] = 1480, OpenProcess failed! dwProcessIds[23] = 1524, OpenProcess failed! dwProcessIds[24] = 1572, OpenProcess failed! dwProcessIds[25] = 912, hProcess = 56, tszProcessName = \Device\HarddiskVolume2\ Windows\System32\taskhost.exe dwProcessIds[26] = 2068, hProcess = 56, tszProcessName = \Device\HarddiskVolume2 \Windows\System32\dwm.exe dwProcessIds[27] = 2116, hProcess = 56, tszProcessName = \Device\HarddiskVolume2 \Windows\explorer.exe dwProcessIds[28] = 2556, hProcess = 56, tszProcessName = \Device\HarddiskVolume2 \Program Files\TortoiseGit\bin\TGitCache.exe dwProcessIds[29] = 2700, hProcess = 56, tszProcessName = \Device\HarddiskVolume2 \Program Files (x86)\HTC\HTC Sync Manager\HTC Sync\adb.exe dwProcessIds[30] = 2860, OpenProcess failed! dwProcessIds[31] = 3504, OpenProcess failed! dwProcessIds[32] = 3692, OpenProcess failed! dwProcessIds[33] = 1564, OpenProcess failed! dwProcessIds[34] = 3056, hProcess = 56, tszProcessName = \Device\HarddiskVolume2 \Program Files (x86)\Dropbox\Client\Dropbox.exe dwProcessIds[35] = 2108, hProcess = 56, tszProcessName = \Device\HarddiskVolume2 \Program Files (x86)\Dropbox\Client\Dropbox.exe dwProcessIds[36] = 2364, hProcess = 56, tszProcessName = \Device\HarddiskVolume2 \Program Files (x86)\Dropbox\Client\Dropbox.exe dwProcessIds[37] = 1468, hProcess = 56, tszProcessName = \Device\HarddiskVolume2 \Program Files (x86)\Dropbox\Client\102.4.431\QtWebEngineProcess.exe dwProcessIds[38] = 1072, hProcess = 56, tszProcessName = \Device\HarddiskVolume2 \Program Files (x86)\Dropbox\Client\102.4.431\QtWebEngineProcess.exe dwProcessIds[39] = 836, hProcess = 56, tszProcessName = \Device\HarddiskVolume2\ Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE\devenv.exe dwProcessIds[40] = 3932, hProcess = 56, tszProcessName = \Device\HarddiskVolume2 \Program Files (x86)\TeraPad\TeraPad.exe dwProcessIds[41] = 4032, hProcess = 56, tszProcessName = \Device\HarddiskVolume2 \Windows\System32\notepad.exe dwProcessIds[42] = 3964, OpenProcess failed! dwProcessIds[43] = 2540, hProcess = 56, tszProcessName = \Device\HarddiskVolume2 \Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE\mspdbsrv.exe dwProcessIds[44] = 3624, OpenProcess failed! dwProcessIds[45] = 2176, OpenProcess failed! dwProcessIds[46] = 828, hProcess = 56, tszProcessName = \Device\HarddiskVolume2\ Windows\SysWOW64\cmd.exe dwProcessIds[47] = 4004, hProcess = 56, tszProcessName = \Device\HarddiskVolume2 \Windows\System32\conhost.exe dwProcessIds[48] = 1008, hProcess = 56, tszProcessName = \Device\HarddiskVolume2 \Project\Cloud\github.com\Sample\winapi\GetProcessImageFileName\GetProcessImageF ileName\src\GetProcessImageFileName\release\GetProcessImageFileName.exe 続行するには何かキーを押してください . . .
まあ、開けないのはしょうがないとして、開けるものは取得できた。
ただし、パスがデバイス形式なのは注意。