В комментариях уже упоминалось несколько способов. Вероятно, лучшим и простым способом было бы открыть процесс с PROCESS_QUERY_LIMITED_INFORMATION
и вызвать QueryFullProcessImageName
, как писали Реми Лебо и RbMm.
Тем не менее, позвольте мне показать другой способ: вы можете использовать WMI. Обратите внимание, что это далеко не лучший вариант (так как он очень «дорогой» за кулисами), но если по какой-то причине вы не можете использовать другие опции, это может быть полезно знать.
Класс WMI Win32_Process
имеет поле ExecutablePath
, которое содержит информацию, которую вы ищете. Вы также сможете читать его из 32-разрядного процесса.
Вот описание , как читать данные из WMI с помощью C ++ .
Пример в PowerShell :
PS Z:\> Get-WmiObject -Query 'Select ExecutablePath From Win32_Process Where ProcessId = 6056'
__GENUS : 2
__CLASS : Win32_Process
__SUPERCLASS :
__DYNASTY :
__RELPATH :
__PROPERTY_COUNT : 1
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ExecutablePath : C:\Program Files (x86)\Moo0\AlwaysOnTop 1.24\WindowMenuPlus64.exe
PSComputerName :