Ermitteln, ob eine ausführbare Datei (oder Bibliothek) 32 oder 64 Bit (unter Windows) enthält

7

Ich versuche herauszufinden, ob eine bestimmte ausführbare Datei (oder Bibliothek) für 32-Bit oder 64-Bit von Python kompiliert wurde. Ich benutze Vista 64-Bit und möchte feststellen, ob eine bestimmte Anwendung in einem Verzeichnis für 32-Bit oder 64-Bit kompiliert ist.

Gibt es eine einfache Möglichkeit, dies nur mit den Standard-Python-Bibliotheken (derzeit 2.5.4) zu tun?

    
pkit 28.08.2009, 08:05
quelle

3 Antworten

18

Die Windows-API hierfür ist GetBinaryType . Sie können dies aus Python mit pywin32 aufrufen:

%Vor%

Wenn Sie dies ohne pywin32 tun möchten, müssen Sie den PE-Header selbst lesen. Hier ist ein Beispiel in C #, und hier ist ein schneller Port zu Python:

%Vor%     
Martin B 28.08.2009, 08:27
quelle
4

Wenn Sie Python 2.5 oder höher unter Windows ausführen, können Sie auch die Windows-API ohne pywin32 mit ctypes verwenden.

%Vor%

Verwenden Sie dann GetBinaryType genau wie bei win32file.GetBinaryType.

Beachten Sie, dass Sie handle_nonzero_success implementieren müssten, was grundsätzlich eine Ausnahme auslöst, wenn der Rückgabewert 0 ist.

    
Jason R. Coombs 29.08.2009 16:08
quelle
0

Ich war in der Lage, die Antwort von Martin B in einem Python 3.5-Programm erfolgreich zu verwenden, nachdem ich diese Anpassung vorgenommen hatte:

%Vor%

Ursprünglich hat es mit meinem Programm in Python 2.7 recht gut funktioniert, aber nachdem ich andere notwendige Änderungen vorgenommen hatte, entdeckte ich, dass ich b'MZ 'bekam, und die Decodierung scheint das zu beheben.

    
thesis 29.09.2016 06:16
quelle

Tags und Links