Condividi tramite


Funzione GetProcessImageFileNameA (psapi.h)

Recupera il nome del file eseguibile per il processo specificato.

Sintassi

DWORD GetProcessImageFileNameA(
  [in]  HANDLE hProcess,
  [out] LPSTR  lpImageFileName,
  [in]  DWORD  nSize
);

Parametri

[in] hProcess

Handle per il processo. L'handle deve avere il diritto di accesso PROCESS_QUERY_INFORMATION o PROCESS_QUERY_LIMITED_INFORMATION . Per altre informazioni, vedere Sicurezza dei processi e diritti di accesso.

Windows Server 2003 e Windows XP: L'handle deve avere il diritto di accesso PROCESS_QUERY_INFORMATION .

[out] lpImageFileName

Puntatore a un buffer che riceve il percorso completo del file eseguibile.

[in] nSize

Dimensioni del buffer lpImageFileName , in caratteri.

Valore restituito

Se la funzione ha esito positivo, il valore restituito specifica la lunghezza della stringa copiata nel buffer.

Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Il file Psapi.dll viene installato nella directory %windir%\System32. Se è presente un'altra copia di questa DLL nel computer, può causare l'errore seguente durante l'esecuzione di applicazioni nel sistema: "Impossibile trovare il punto di ingresso della procedura GetProcessImageFileName nella libreria di collegamento dinamico PSAPI.DLL". Per risolvere questo problema, individuare le versioni che non si trovano nella directory %windir%\System32 ed eliminarle o rinominarle, quindi riavviare.

La funzione GetProcessImageFileName restituisce il percorso in formato dispositivo, anziché le lettere di unità. Ad esempio, il nome file C:\Windows\System32\Ctype.nls sarà simile al seguente nel formato del dispositivo:

\Device\Harddisk0\Partition1\Windows\System32\Ctype.nls

Per recuperare il nome del modulo del processo corrente, usare la funzione GetModuleFileName con un handle di modulo NULL. Questa operazione è più efficiente rispetto alla chiamata della funzione GetProcessImageFileName con un handle al processo corrente.

Per recuperare il nome del modulo eseguibile principale per un processo remoto in formato percorso win32, usare la funzione QueryFullProcessImageName .

A partire da Windows 7 e Windows Server 2008 R2, Psapi.h stabilisce i numeri di versione per le funzioni PSAPI. Il numero di versione PSAPI influisce sul nome usato per chiamare la funzione e la libreria che un programma deve caricare.

Se PSAPI_VERSION è 2 o versione successiva, questa funzione viene definita come K32GetProcessImageFileName in Psapi.h ed esportata in Kernel32.lib e Kernel32.dll. Se PSAPI_VERSION è 1, questa funzione viene definita come GetProcessImageFileName in Psapi.h ed esportata in Psapi.lib e Psapi.dll come wrapper che chiama K32GetProcessImageFileName.

I programmi che devono essere eseguiti in versioni precedenti di Windows e Windows 7 e versioni successive devono sempre chiamare questa funzione come GetProcessImageFileName. Per garantire la risoluzione corretta dei simboli, aggiungere Psapi.lib alla macro TARGETLIBS e compilare il programma con -DPSAPI_VERSION=1. Per usare il collegamento dinamico in fase di esecuzione, caricare Psapi.dll.

Nota

L'intestazione psapi.h definisce GetProcessImageFileName come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione psapi.h
Libreria Kernel32.lib in Windows 7 e Windows Server 2008 R2; Psapi.lib (se PSAPI_VERSION=1) in Windows 7 e Windows Server 2008 R2; Psapi.lib in Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP
DLL Kernel32.dll in Windows 7 e Windows Server 2008 R2; Psapi.dll (se PSAPI_VERSION=1) in Windows 7 e Windows Server 2008 R2; Psapi.dll in Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP

Vedi anche

Funzioni PSAPI

Informazioni sul processo

QueryFullProcessImageName