Handles sind Handles. Die ID eines Prozesses oder eines Threads ist bis zum Tod eindeutig. Handles sind hingegen einfach Bezeichner. Sie identifizieren nicht das Objekt, sondern eine Beziehung zu einem Objekt (irgendjemand hat
Handle mal mit Henkel übersetzt). Daher ist es auch kein Wunder, dass der Rückgabewert bei jedem Aufruf anders ist. Bezüglich OpenProcessToken solltest du mal die Dokumentation lesen.
Zitat:
A
handle to the process whose
access token is opened. The process must have the PROCESS_QUERY_INFORMATION
access permission.
Wenn du das
Handle also lediglich mit SYNCHRONIZE öffnest, solltest du dich nicht wundern. Des Weiteren gibt es diese tolle Funktion GetLastError.