Freigeben über


GetProcessImageFileNameA-Funktion (psapi.h)

Ruft den Namen der ausführbaren Datei für den angegebenen Prozess ab.

Syntax

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

Parameter

[in] hProcess

Ein Handle für den Prozess. Das Handle muss über das PROCESS_QUERY_INFORMATION - oder PROCESS_QUERY_LIMITED_INFORMATION-Zugriffsrecht verfügen. Weitere Informationen finden Sie unter Prozesssicherheit und Zugriffsrechte.

Windows Server 2003 und Windows XP: Das Handle muss über das Zugriffsrecht PROCESS_QUERY_INFORMATION verfügen.

[out] lpImageFileName

Ein Zeiger auf einen Puffer, der den vollständigen Pfad zur ausführbaren Datei empfängt.

[in] nSize

Die Größe des lpImageFileName-Puffers in Zeichen.

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt der Rückgabewert die Länge der in den Puffer kopierten Zeichenfolge an.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Die Datei Psapi.dll wird im Verzeichnis %windir%\System32 installiert. Wenn sich eine weitere Kopie dieser DLL auf Ihrem Computer befindet, kann dies beim Ausführen von Anwendungen auf Ihrem System zu folgendem Fehler führen: "Der Prozedureinstiegspunkt GetProcessImageFileName konnte nicht in der dynamic link library PSAPI.DLL gefunden werden." Um dieses Problem zu umgehen, suchen Sie alle Versionen, die sich nicht im Verzeichnis %windir%\System32 befinden, löschen oder benennen Sie sie um, und starten Sie dann neu.

Die GetProcessImageFileName-Funktion gibt den Pfad in Geräteform und nicht in Laufwerkbuchstaben zurück. Beispielsweise würde der Dateiname C:\Windows\System32\Ctype.nls im Geräteformular wie folgt aussehen:

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

Verwenden Sie zum Abrufen des Modulnamens des aktuellen Prozesses die GetModuleFileName-Funktion mit einem NULL-Modulhandle. Dies ist effizienter als das Aufrufen der GetProcessImageFileName-Funktion mit einem Handle für den aktuellen Prozess.

Verwenden Sie die Funktion QueryFullProcessImageName, um den Namen des Standard ausführbaren Moduls für einen Remoteprozess im Win32-Pfadformat abzurufen.

Ab Windows 7 und Windows Server 2008 R2 erstellt Psapi.h Versionsnummern für die PSAPI-Funktionen. Die PSAPI-Versionsnummer wirkt sich auf den Namen aus, der zum Aufrufen der Funktion und der Bibliothek verwendet wird, die ein Programm laden muss.

Wenn PSAPI_VERSION 2 oder höher ist, wird diese Funktion in Psapi.h als K32GetProcessImageFileName definiert und in Kernel32.lib und Kernel32.dll exportiert. Wenn PSAPI_VERSION 1 ist, wird diese Funktion in Psapi.h als GetProcessImageFileName definiert und in Psapi.lib und Psapi.dll als Wrapper exportiert, der K32GetProcessImageFileName aufruft.

Programme, die unter früheren Versionen von Windows sowie Windows 7 und höheren Versionen ausgeführt werden müssen, sollten diese Funktion immer als GetProcessImageFileName aufrufen. Um die korrekte Auflösung von Symbolen sicherzustellen, fügen Sie Dem TARGETLIBS-Makro Psapi.lib hinzu, und kompilieren Sie das Programm mit -DPSAPI_VERSION=1. Laden Sie Psapi.dll, um die dynamische Laufzeitverknüpfung zu verwenden.

Hinweis

Der psapi.h-Header definiert GetProcessImageFileName als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile psapi.h
Bibliothek Kernel32.lib unter Windows 7 und Windows Server 2008 R2; Psapi.lib (wenn PSAPI_VERSION=1) unter Windows 7 und Windows Server 2008 R2; Psapi.lib unter Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP
DLL Kernel32.dll unter Windows 7 und Windows Server 2008 R2; Psapi.dll (wenn PSAPI_VERSION=1) unter Windows 7 und Windows Server 2008 R2; Psapi.dll unter Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP

Weitere Informationen

PSAPI-Funktionen

Prozessinformationen

QueryFullProcessImageName