Windows XP runterfahren



  • Hi,

    ich hab einen Scheduler geschrieben, dessen Hauptzweck es war, WinXP
    zu einem bestimmten Zeitpunkt runterzufahren.
    Wenn der Zeitpunkt eintritt, kann eine cmd oder exe aufgerufen werden.

    Ich habe eine cmd-Datei mit "shutdown -f -s" aufgerufen, nur leider
    stellt sich der Rechner damit nicht aus, sondern es erscheint die
    "Sie können jetzt ausschalten"-Seite.
    Weiss jemand, wie man runterfährt und sich der Rechner ausschaltet?

    Danke.

    Jockel



  • Ich hab ein Icon gemacht mit der Zeile:

    %systemroot%\system32\shutdown.exe -s -t 05 -f
    

    rechner fährt runter und schaltet sich aus....das -t 05 ist damit man noch 5sec zeit hat programme zu beenden usw...!



  • 5er1al: Das funktioniert ja anscheinend. Er schaltet sich ja nur nicht aus.

    Jockelx: Geh mal in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon und schau ob PowerdownAfterShutdown auf 1 steht.



  • Bin leider gerade nicht zuhause, kann es also nicht testen.
    Allerdings befürchte ich, dass das nicht funktioniert, da beim
    runterfahren über start::beenden der Rechner ja auch abgeschaltet wird.

    Ich werde es aber ausprobieren. Danke erstmal.

    Jockel



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ich hab auch schon son programm geschrieben, hatte das problem also auch schon...hier der quellcode, du musst nämlich erst die rechte dafür anfordern...

    MNusst nur den text eingeben :

    HANDLE hToken;
    TOKEN_PRIVILEGES tkp;
    MSG msg;

    // Get a token for this process.
    if (!OpenProcessToken(GetCurrentProcess(),
    TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
    MessageBox(NULL, "Error while creating a process token!", B_OK, 0);

    // 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);

    // Cannot test the return value of AdjustTokenPrivileges.

    if (GetLastError() != ERROR_SUCCESS)
    MessageBox(NULL, "Error while adjusting token privileges!", MB_OK, 0);

    // Shut down the system and force all applications to close.

    if (!ExitWindowsEx(EWX_POWEROFF, 0))
    MessageBox(NULL, "Error while trying to shutdown! ", MB_OK, 0); [/code]


Anmelden zum Antworten