GetProcessImageFileName

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
続行するには何かキーを押してください . . .

まあ、開けないのはしょうがないとして、開けるものは取得できた。
ただし、パスがデバイス形式なのは注意。

Sample/winapi/GetProcessImageFileName/GetProcessImageFileName/src/GetProcessImageFileName at master · bg1bgst333/Sample · GitHub