3 Stimmen

Wie schaltet man den PC über Windows API aus?

I niemals programmiert ein winapi so habe ich ein kleines Problem hier .

Ich muss meinen PC von meiner Anwendung aus abschalten.

Ich habe dieses Beispiel gefunden Linktext Dann habe ich dieses Beispiel gefunden, wie man Privilegien ändern kann Linktext

Aber ich habe ein Problem, wie ich den Parameter HANDLE hToken // Zugriffs-Token-Handle bekomme

Ich glaube, ich muss es bei der nächsten Bestellung machen, um den Parameter zu bekommen OpenProcessToken LookupPrivilegeValue AdjustTokenPrivileges aber es gibt so viele Parameter, dass ich keine Ahnung habe, was ich mit ihnen machen soll.

Vielleicht haben Sie ein Beispiel, wie ich den HANDLE hToken Parameter bekomme, damit das funktioniert.

Übrigens habe ich bereits den folgenden Beitrag gesehen Linktext

Vielen Dank an Sie alle.

0voto

chowey Punkte 8268

Ein funktionierender Code für InitiateSystemShutdownEx :

// Get the process token
HANDLE hToken;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
    &hToken);

// Build a token privilege request object for shutdown
TOKEN_PRIVILEGES tk;
tk.PrivilegeCount = 1;
tk.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
LookupPrivilegeValue(NULL, TEXT("SeShutdownPrivilege"), &tk.Privileges[0].Luid);

// Adjust privileges
AdjustTokenPrivileges(hToken, FALSE, &tk, 0, NULL, 0);

// Go ahead and shut down
InitiateSystemShutdownEx(NULL, NULL, 0, FALSE, FALSE, 0);

Soweit ich das beurteilen kann, liegt der Vorteil gegenüber der ExitWindowsEx Lösung ist, dass der aufrufende Prozess nicht dem aktiven Benutzer angehören muss.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X