Ruhezustandsmodus automatisch aktivieren?

Status
Für weitere Antworten geschlossen.

Yoda2003

Well-known member
Hallo,

ich habe (mal wieder^^) ein Problem. Standartmäßig ist bei Windows XP Home der Ruhezustandsmodus deaktiviert (zu finden bei Systemsteuerugn, Energiesparoptionen, Ruhezustandsmodus).

Mein Tool soll den Computer aber nun in den Ruhezustandsmodus herunterfahren. Aber das geht nur, wenn der aktiviert ist, weil er sonst in den Standby fährt.

Gibt es ne Möglichkeit den automatisch zu aktivieren?

Hab schon mit google ne halbe ewigkeit gesucht aber rein gar nichts gefunden :(

Das einfachste wäre ja, wenn man es mit der registry machen könnte. Darum habe ich mal nen Reg Monitor neben laufen lassen und hab folgendes festgestellt:

Code:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power

da gibts jetzt nen Eintrag "Heuristics"
Wenn der Ruhezustandsmodus deaktiviert ist, sieht das ganze folgendermaßen aus: XX XX XX XX XX XX 00 XX XX ...
wenn er aktiviert ist, sieht das folgendermaßen aus: XX XX XX XX XX XX 01 XX XX ...

Nur, wenn ich jetzt diesen eintrag in der registry ändere, hat das leider keinerlei auswirkung, er bleibt deaktiviert bzw. aktiviert :(

Vielleicht hat ja jemand n Vorschalg, wenn nicht sogar ne komplett andere idee.

mfg
Yoda2003

edit: bekommt man das auch evtl. irgendwie mit makros hin, aber so, dass es auf jedem xp funzt?
 
Die einzige Möglichkeit dir mir bekannt ist, ist via unattended Hibernation auf yes zu setzten. Die Registry-Option ist nur zum Abfragen, setzen wird hier ihmo ignoriert. Sonst per AutoIt.
 
Hm leider werde ich aus deinem Post nicht ganz schlau :(

Was ich jetzt bei google gefunden hab ist, dass man ne datei namens "Winnt.sif" erstellen kann und darin dann [unattended] Hibernation = yes (um den ruhezustand zu aktivieren). Hört sich eigentlich fantastisch an. Aber in der Praxis kann ich damit nicht viel anfangen. So wie ich dass verstanden habe sind das die vorgefertigten Systemoptionen die bei der Installation von Windows im Vorherein festgelegt worden sind. d.h. Der Ruhezustand wäre erst nach der Windowsinstallation drin. Aber das will ich ja nicht^^
 
ok ich bin jetzt nich ganz sicher drum skalpiert mich nich wenns nich stimmt aber ne anregung is es...

Kann es sein das der PC nen neustart braucht um die Werte zu übernehmen?

mfg
 
Ein neustart würde ich gerne in Kauf nehmen, dennoch weiß ich leider net, wie ich die datei einbinden soll, bzw. wo?

mfg
Yoda2003
 
Die Winnt.sif ist nur für eine Installation des Betriebssystems sinnvoll, hatt ich vergessen anzugegeben. Ein Neustart bringt auch nichts, Registry-Werte sind danach wieder auf dem vorherigen Wert. Eventuell geht das über WMI, bzw. hier ist jedenfalls der API-Call (SetSupendState). Evtl. hilft dir das hier:
hxxp://www.microsoft.com/germany/msdn/library/visualtools/vb6/WindowsindenRuhezustandversetzen.mspx?mfr=true

Ist zwar in VB, dürfte aber nicht schwierig sein, da es auf die API zurückgreift.

[EDIT]
So, ich hab jetzt die Sache nochmal mit Regmon betrachtet, es wird nicht nur in HKLM\...\..\Power geschrieben. Es wird anscheinend intern eine Gruppenrichtlinie erstellt. Eine Möglichkeit sehe ich aber doch noch, die ist zwar nicht elegant aber was solls ;)
"powercfg /HIBERNATION on" lautet das Zauberwort. Eine Lösung via Registry habe ich leider nicht gefunden, wäre aber auch daran interessiert wenn sich so etwas anfindet.
[/EDIT]
 
ich weis jetzt ned ob das hilft, aber ich hab mir einfach ne neue Verknüpfung auf dem Desktop angelegt und zwar mit dem

Ziel: "%windir%\system32\rundll32.exe powrprof.dll,SetSuspendState"
ausführen in: "%windir%"

Und wenn ich da jetzt draufklicke fährt der PC in den Ruhezustand.
 
Ja, das war aber nicht meine Frage!
Ich möchte nur wissen, wie man den Ruhezustand aktiviert, nicht ausführt.
Wenn nämlich der deaktiviert ist, hilft die Verknüpfung auch wenig, da er in den StandBy fahren würde.
 
eine weitere idee wär:

wenn man den ruhezustand startet wird ja wahrscheinlich noch ein dos
programm aufgerufen das den pc in den diesen Zustand versetzt

Und jetzt das schöne:
Diese Datei muss auch existieren auch wenn der Ruhezustand nicht aktiviert ist

jetzt musst du dein tool so programmieren das diese datei mit den entsprechenden parametern gestartet wird.....

mfg
 
Also, ich hab jetzt eine Lösung gefunden.
Mein Programm generiert eine temporäre *.bat Datei mit folgendem Inhalt:
Code:
@echo off
powercfg /hibernate on
Und dann ist der Ruhezustand aktiviert :)

Ist zwar keine schöne Lösung aber es funzt :)

Ich möchte jetzt aber noch eine Steigerung haben, also ich möchte 2 Befehle in einer bat datei haben, die nacheinander ausgeführt werden sollen. Aber ich bekomme mit meinem C++ Programm leider nur einzeilige Dateien hin. So sieht mein Code bislang aus:

Code:
//Temporäre Datei erstellen
FILE *stream = fopen("temp.bat", "w+");
fprintf(stream,"powercfg /hibernate on");
fclose(stream);

Zum Beispiel möchte ich noch, dass danach diese Datei gelöscht wird. Das würde ich ja mit dem Befehl "del temp.bat" machen. Aber wie wird dieser Befehl in diese bat datei reingeschrieben? \n wie in C++ funzt leider net :(

edit: Muss mich wohl vertippt haben. \n geht natürlich!
@mods: pls closen


mfg
Yoda2003
 
Status
Für weitere Antworten geschlossen.

Beliebte Schlagwörter

Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.

Zurück
Oben Unten