System - Windows(2000) beenden



  • Kann mir jemand sagen wie ich Windows 2000 per Code herunterfahren kann. Mit der ExitWindows-Funktion von Windows 98 klappt das leider nicht.

    mfg
    Silver

    [ Dieser Beitrag wurde am 27.11.2002 um 23:06 Uhr von Jansen editiert. ]



  • Da ein alter Beitrag zum selben Thema leider galoppierendem Speichermangel zum Opfer fiel, hier nochmal ein Beispielcode:

    void __fastcall TForm1::BShutdownNTClick(TObject *Sender)
    {
        HANDLE token;
        TOKEN_PRIVILEGES tokenpriv;
    
        // Token für diesen Prozess holen
        if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &token)==0)
        {   ShowMessage("Fehler beim OpenProcessToken");
            return;
        }
    
        // LUID für die Shutdown Privilege holen
        LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tokenpriv.Privileges[0].Luid);
        tokenpriv.PrivilegeCount=1;
        tokenpriv.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
    
        // Shutdown privilege für diesen Prozess setzen
        if(AdjustTokenPrivileges(token, false, &tokenpriv, 0, (PTOKEN_PRIVILEGES)NULL, 0)==NULL)
        {   ShowMessage("Fehler bei AdjustTokenPrivileges");
            return;
        }
    
        // Windows beenden und Rechner ausschalten
        if(ExitWindowsEx(EWX_LOGOFF | EWX_POWEROFF, NULL)==NULL)
        {   ShowMessage("Fehler beim ExitWindowsEx");
            return;
        }
    }
    


  • Bei mir macht Win2000 lediglich einen Neustart mit dieser Funktion!

    Crush



  • Vielleicht kann Dein Rechner die Abschaltfunktion nicht
    Bei mir liefs einwandfrei.

    -------------------------------------------------------------------

    Nachtrag (Posting von <Redhawk> )

    So. Ich habs rausgefunden.
    Für WIN2000:

    // Windows beenden und Rechner ausschalten
    if(ExitWindowsEx(EWX_LOGOFF | EWX_POWEROFF, NULL)==NULL)
    { 
      ShowMessage("Fehler beim ExitWindowsEx");
      return;
    }
    

    Für WINNT4

    // Windows beenden und Rechner ausschalten
    if(ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, NULL)==NULL)
    { 
      ShowMessage("Fehler beim ExitWindowsEx");
      return;
    }
    

    Müßte funktionieren.

    -------------------------------------------------------------------
    [ 20.09.2001: Beitrag editiert von: Peter ]

    [ Dieser Beitrag wurde am 20.10.2002 um 12:54 Uhr von Jansen editiert. ]


Anmelden zum Antworten