neustart????
-
also ich will mit winxp einen neustart machen aber wenn ich
ExitWindowsEx(EWX_REBOOT, 0)
benutze bleibts immer stehen
also beendet alles!!dann kann ich nur noch den hintergrund sehen und nix mehr machen aber warum????
-
hi,
vielleicht hast du nicht die noetigen rechte dazu. versuchs mal hiermit#include "stdafx.h" #include <windows.h> #include <winuser.h> #include <stdlib.h> bool Down() { //Windows NT HANDLE hToken; TOKEN_PRIVILEGES tkp; OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken); LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid); tkp.PrivilegeCount=1; tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken,false,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0); return ExitWindowsEx(EWX_POWEROFF ,0); } int main() { Down(); return 0; }edit: Codetags hinzugefügt.
-
Du musst dir erst die Rechte holen. Aber das kauen wir jede Woche einmal durch. Und das Forum hat eine Suche.

-
... die aber derzeit leider nicht funktioniert / deaktiviert ist

-
nee die rechte hab ich geholt hab des exemple aus der msdn
HANDLE hToken; TOKEN_PRIVILEGES tkp; // Get a token for this process. if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return( FALSE ); // Get the LUID for the shutdown privilege. LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; // one privilege to set tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; // Get the shutdown privilege for this process. AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); if (GetLastError() != ERROR_SUCCESS) return FALSE; // Shut down the system and force all applications to close. if (!ExitWindowsEx(EWX_REBOOT, 0)) return FALSE; return TRUE;
-
hat jemand ne idee warums nicht klappt
-
ich habs hinbekommen
BOOL REBOOT() { HANDLE hToken; TOKEN_PRIVILEGES tkp; char buf[100]; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return( FALSE ); LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; // one privilege to set tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); if (GetLastError() != ERROR_SUCCESS) return FALSE; SetProcessShutdownParameters(400,0); if (!ExitWindowsEx(EWX_REBOOT,EWX_FORCE)) { return FALSE; MessageBox(NULL,"hat nicht gefunzt",0,0); } return TRUE; }des isn neustart von xp
-
Also hat das SetProcessShutdownParameters und / oder EWX_FORCE gefehlt.
btw: Zu dem MessageBox-Aufruf nach der return Anweisung dürfte er doch eigentlich gar nie kommen

-
lol stimmt
-
Super dass es klappt aber es geht eigentlich sehr viel einfacher. Auf meiner Webseite gibt's mal wieder 'nen Tipp.
Gruß,
Chris