Überprüfen Sie den Community-Kommentar zum MSDN ReadProcessMemory Seite, Zitat (sic):
W7 führt keinen Lese-Prozessspeicher
ausMöglicherweise müssen Sie Ihre Zugriffsberechtigungen für "SE_DEBUG_NAME" für das aktuelle Prozesstoken überprüfen. Wenn nicht aktiviert. Aktiviert es. Dies muss natürlich als Administrator erfolgen.
Deklarieren Sie auch die Rückgabetypen vollständig und verwenden Sie den Parameter use_last_error
, wobei ctypes
den Wert GetLastError()
unmittelbar nach dem Aufruf intern zwischenspeichert. Ansonsten könnte es falsch sein. Wenn Sie sich auf einem 64-Bit-System befinden, sind SIZE_T und Zeiger 64-Bit-Werte, so dass ctypes die Typen kennen muss, um den Stapel für den Aufruf korrekt einzurichten.
Auch, FYI, sogar mit allen Fixes bekomme ich den gleichen Fehlerwert, aber ich habe nicht die Mühe gemacht, SE_DEBUG_NAME
zu aktivieren.
Gelöst
Die folgende Zeile ist das Problem:
%Vor% win32api.OpenProcess
gibt ein temporäres PyHANDLE
zurück, das zerstört wird und den Handle schließt , nachdem das Handle abgerufen wurde.
Die Lösung ist zu verwenden:
%Vor% PROCESS
enthält dann das Objekt PyHANDLE
und das Handle bleibt gültig.
Tags und Links python winapi ctypes readprocessmemory