www.mikrocontroller.net

Forum: PC-Programmierung ExitWindowsEx


Autor: urmel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe mir ein Programm erstellt, mit dem ich jedes Windows neu
Booten möchte. Bei XP gehts aber bei 98 erzählt mir der Rechner, dass
erst die EXE beendet werden müsste befor Windows runterfahren kann.
Wenn ich die EXE schliesse passiert aber nix.

Ich benutze diesen Code.

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);
ExitWindowsEx(EWX_REBOOT, 0);

Habe auch das Gantze nur mit ExitWindowsEx(EWX_REBOOT, 0); ausprobiert.
Auch nix.
Wer kann mir sagen wo der Fehler für Win 98 sitzt.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du mal in der Doku des Plattform-SDKs nachgesehen?

Da steht nämlich eine Bemerkung zu Win9x:
> Windows Me/98/95:
> ExitWindowsEx does not work from a console application.

Autor: urmel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MSDN meinte das Geht.
Wie kann ich das denn sonst machen?

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> MSDN meinte das Geht.
Tut es das?
Schau lieber nochmal genau nach. :-)
http://msdn.microsoft.com/library/en-us/sysinfo/ba...

> Wie kann ich das denn sonst machen?
Ich würde wahrscheinlich eine WinAPI-Anwendung erstellen, also keine
Konsolenanwendung und mit WinMain. Mir fällt nämlich gerade keine
Alternative zu ExitWindowsEx ein, die unter Win9x funktioniert.
Möglich, dass es eine elegantere Methode gibt.

Autor: Frank S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@urmel

Ich habe zwar kein WIN98 mehr zur Hand, habe das aber aus einer alten
Doku:
Rundll32 Shell32.dll,SHExitWindowsEx 0  Anwender abmelden
Rundll32 Shell32.dll,SHExitWindowsEx 1  Windows beenden
Rundll32 Shell32.dll,SHExitWindowsEx 2  Windows neu starten
Rundll32 Shell32.dll,SHExitWindowsEx 4  Windows beenden, auch wenn noch
Anwendungen offen sind
Rundll32 Shell32.dll,SHExitWindowsEx 8  Rechner ausschalten
Rundll32 Shell32.dll,SHExitWindowsEx 13  Funktion 1 + 4 + 8 zusammen
ausführen
Gross/Kleinschreibung beim Kommando ist wichtig. Kommandos gelten nur
für WIN9X/ME. Hatte das früher mal als Icon auf dem Desktop und konnte
per Doppelklick oder Tastenkombination den Rechner ausschalten oder
rebooten.

mit freundlichen Grüßen

Frank

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.