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 Prozesssicherheits- und Zugriffsberechtigungen.
Windows Server 2003 und Windows XP: Das Handle muss über das PROCESS_QUERY_INFORMATION Zugriffsrecht 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 fehlschlägt, ist der Rückgabewert null. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.
Bemerkungen
Die Datei Psapi.dll wird im Verzeichnis %windir%\System32 installiert. Wenn eine weitere Kopie dieser DLL auf Ihrem Computer vorhanden ist, kann dies zu dem folgenden Fehler führen, wenn Anwendungen auf Ihrem System ausgeführt werden: "Der Einstiegspunkt "GetProcessImageFileName der Prozedur 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, und löschen oder umbenennen sie, und starten Sie dann neu.
Die GetProcessImageFileName-Funktion gibt den Pfad im Geräteformular und nicht in Laufwerkbuchstaben zurück. Der Dateiname C:\Windows\System32\Ctype.nls würde z. B. wie folgt im Geräteformular 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.
Um den Namen des haupt ausführbaren Moduls für einen Remoteprozess im Win32-Pfadformat abzurufen, verwenden Sie die QueryFullProcessImageName-Funktion.
Ab Windows 7 und Windows Server 2008 R2 richtet Psapi.h Versionsnummern für die PSAPI-Funktionen ein. 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 als K32GetProcessImageFileName in Psapi.h definiert und in Kernel32.lib und Kernel32.dllexportiert. Wenn PSAPI_VERSION 1 ist, wird diese Funktion als GetProcessImageFileName in Psapi.h definiert und in Psapi.lib exportiert und Psapi.dll als Wrapper, der K32GetProcessImageFileNameaufruft.
Programme, die in früheren Versionen von Windows und Windows 7 und höher ausgeführt werden müssen, sollten diese Funktion immer als GetProcessImageFileNameaufrufen. Um die richtige Auflösung von Symbolen sicherzustellen, fügen Sie psapi.lib dem TARGETLIBS Makro hinzu und kompilieren Sie das Programm mit -DPSAPI_VERSION=1. Laden Sie Psapi.dll, um laufzeitbasierte dynamische Verknüpfungen zu verwenden.
Anmerkung
Der psapi.h-Header definiert GetProcessImageFileName als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante 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 |
---|---|
mindestens unterstützte Client- | Windows XP [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows Server 2003 [Nur Desktop-Apps] |
Zielplattform- | Fenster |
Header- | psapi.h |
Library | 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 |