PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : windows 10 - registry - Systemsteuerung\Alle Systemsteuerungselemente\Energieoptionen



lrg0
31.05.2017, 10:33
Hi,

ich ändere ziemlich häufig den Wert "Beim Drücken des Netzschalters:" unter Systemsteuerung\Alle Systemsteuerungselemente\Energieoptionen\Systemein stellungen.

http://www0.xup.in/exec/ximg.php?fid=13339682 (http://www.xup.in/dl,13339682/Unbenannt2.png/)

Jetzt habe ich mir ein kleines Tool geschrieben, mit dem ich einfach den Wert in der Registry ändern wollte...
leider liegt bei Windows 10 die Option nicht unter dem Path "HKEY_LOCAL_MACHINE\ Software\ Policies\ Microsoft\ Power\ PowerSettings\ 7648EFA3-DD9C-4E3E-B566-50F929386280".

Mit dem ProcessMonitor habe ich versucht, auszulesen welcher Wert geändert wird aber so richtig ist es mir nicht gelungen, damit eine Lösung zu erarbeiten....
http://www0.xup.in/exec/ximg.php?fid=49328567 (http://www.xup.in/dl,49328567/Unbenannt.png/)

Wenn ich versuche den Pfad über regedit zu öffnen komme ich leider nicht ans Ziel.

Wer kann mir helfen, bin ich mit meiner Idee auf dem Holzweg oder wie muss ich vorgehen um den richtigen Wert zu ermitteln und dann mit C# .Net eine Lösung erstellen zu können?

Leange
31.05.2017, 20:13
Hi

Konsolenbefehl:


powercfg (https://technet.microsoft.com/de-de/library/cc748940%28v=ws.10%29.aspx?f=255&MSPPError=-2147217396) -setacvalueindex 381b4222-f694-41f0-9685-ff5bb260df2e (https://msdn.microsoft.com/de-de/library/windows/desktop/aa373177%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396) 4f971e89-eebd-4455-a8de-9e59040e7347 7648efa3-dd9c-4e3e-b566-50f929386280 (https://msdn.microsoft.com/en-us/library/windows/hardware/mt608287(v=vs.85).aspx) 3

Nochmal mit -setdcvalueindex wenn du Batterie, also Lappy, hast.

Lässt sich mit Sicherheit auch mit WMI machen, aber kein Bock dass jetzt zusammen zu basteln xD

Leange

lrg0
31.05.2017, 21:50
Vielen Dank für deine Antwort. Ich würde es gerne mit WMI probieren. Habe bisher aber noch keine Berührungspunkte zu WMI gehabt.
Was ist da die richtige Anlaufstellen dazu; wo kann ich nachlesen, wie mein Query aussehen muss?

Ich habe mich jetzt etwas mit dem Befehl 'powercfg' beschäftigt... Mir ist aber nicht klar, wie ich die aktuelle Einstellung zu '381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 7648efa3-dd9c-4e3e-b566-50f929386280' abrufen kann

lrg0
01.06.2017, 15:07
Ich habe mir jetzt eine zwischen Lösung mit Registry lesen und powercfg als Process einfallen lassen. Es wird auch der Wert geändert und in der Systemsteuerung der neu gewählte Wert 'Nichts unternehmen' angezeigt, aber wenn ich den Netzschalter drücke wird der PC trotzdem heruntergefahren.

hier meine Klasse dazu:


using Microsoft.Win32;using System;
using System.Diagnostics;


namespace Netzschalter
{
class PowerCfg
{
public enum Index { ACSetting, DCSetting }


public static Nullable<int> Get(Index index)
{
String[] valueNames = { "ACSettingIndex", "DCSettingIndex" };
var schema = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Po wer\User\PowerSchemes", "ActivePowerScheme", null);
if ( schema == null) return null;


if (schema.ToString() != "381b4222-f694-41f0-9685-ff5bb260df2e")
{
ErrorLog.write("ActivePowerScheme != 381b4222-f694-41f0-9685-ff5bb260df2e", "PowerCfg.Get()");
return null;
}


Nullable<int> res = null;
try {
res = (int) Registry.GetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Po wer\User\PowerSchemes\381b4222-f694-41f0-9685-ff5bb260df2e\4f971e89-eebd-4455-a8de-9e59040e7347\7648efa3-dd9c-4e3e-b566-50f929386280", valueNames[((int)index)], null);
}
catch(Exception e)
{
ErrorLog.write(e.Message, "PowerCfg.Get()");
return null;
}
return res;
}


public static bool Set(Index index, int value)
{
if (value < -1 || value > 4) throw new ArgumentOutOfRangeException("value");
if (value == -1) return true;


if (Get(index) != value)
{


try
{
Process cmd = new Process();
cmd.StartInfo.FileName = "powercfg";
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.Arguments = index == Index.ACSetting ? "-setacvalueindex" : "-setdcvalueindex";
cmd.StartInfo.Arguments += " 381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 7648efa3-dd9c-4e3e-b566-50f929386280 " + value.ToString();
cmd.Start();
}
catch (Exception e)
{
ErrorLog.write(e.Message, "PowerCfg.Set()");
return false;
}
return true;
}
return false;
}
}
}

Leange
01.06.2017, 18:43
aber wenn ich den Netzschalter drücke wird der PC trotzdem heruntergefahren.

Kanns sein dass die Änderungen erst nach nem Neustart wirksam werden? xD

Leange

lrg0
01.06.2017, 21:01
Möglich, ich habe das Powerscheme auch nochmal neu geladen mit "powercfg -s 381b4222-f694-41f0-9685-ff5bb260df2e" in einem eigenen Process. Das hat aber leider auch nicht geholfen.

Ich werde morgen dann wohl mal probieren, die Werte in der Registry zu setzen. Dazu brauche ich aber evtl Adminrechte.
Vielleicht hat ja noch jemand eine Idee, wie es richtig geht. Hat jemand eine Ahnung, was genau passiert, wenn ich bei dem ersten Bild (s.o) auf "Änderung speichern" klicke. Eigentlich möchte ich ja nur das Verhalten nachahmen. Reicht es da einfach die Werte in der Registry zu setzen oder muss ich noch einen Prozess starten, der das Powerscheme neu lädt?

Ich bin immer noch dabei einiges zu probieren.

hier die momentane Klasse dazu:



using Microsoft.Win32;
using System;
using System.Diagnostics;


namespace Netzschalter
{
static class PowerCfg
{
public enum Index { ACSetting, DCSetting }
public static readonly String Powerscheme = "381b4222-f694-41f0-9685-ff5bb260df2e";


public static Nullable<int> Get(Index index)
{
String[] valueNames = { "ACSettingIndex", "DCSettingIndex" };
var schema = getActivePowerScheme();
if ( schema == null) return null;


Nullable<int> res = null;
try {
res = (int) Registry.GetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Po wer\User\PowerSchemes\381b4222-f694-41f0-9685-ff5bb260df2e\4f971e89-eebd-4455-a8de-9e59040e7347\7648efa3-dd9c-4e3e-b566-50f929386280", valueNames[((int)index)], null);
}
catch(Exception e)
{
ErrorLog.write(e.Message, "PowerCfg.Get()");
return null;
}
return res;
}


public static bool Set(Index index, int value)
{
if (value < -1 || value > 4) throw new ArgumentOutOfRangeException("value");
if (value == -1) return true;


if (Get(index) != value)
{


try
{
Process cmd = new Process();
cmd.StartInfo.FileName = "powercfg";
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.Arguments = index == Index.ACSetting ? "-setacvalueindex" : "-setdcvalueindex";
cmd.StartInfo.Arguments += " 381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 7648efa3-dd9c-4e3e-b566-50f929386280 " + value.ToString();
cmd.Start();


activatePowerScheme();
}
catch (Exception e)
{
ErrorLog.write(e.Message, "PowerCfg.Set()");
return false;
}
return true;
}
return false;
}


public static String getActivePowerScheme()
{
String powerScheme = (String)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Po wer\User\PowerSchemes", "ActivePowerScheme", null);
return powerScheme;
}


private static void activatePowerScheme()
{
Process cmd = new Process();
cmd.StartInfo.FileName = "powercfg";
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.Arguments = "/SETACTIVE 381b4222-f694-41f0-9685-ff5bb260df2e";
cmd.Start();
}
}
}







Durch der Vergleich zweier Registryabbilder habe ich heraus gefunden, dass folgende Werte geändert werden wenn man die Einstellungen über die Systemsteuerung ändert:


HKLM\SYSTEM\ControlSet001\Control\Session Manager\Power\SystemPowerPolicy: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 84 03 00 00 5A 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 01 00 00 00 00 00 00 00 30 2A 00 00 01 00 00 00 01 00 00 00 05 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 2C 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 58 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
HKLM\SYSTEM\ControlSet001\Control\Session Manager\Power\SystemPowerPolicy: 01 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 84 03 00 00 5A 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 01 00 00 00 00 00 00 00 30 2A 00 00 01 00 00 00 01 00 00 00 05 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 2C 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 58 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
HKLM\SYSTEM\CurrentControlSet\Control\Power\User\P owerSchemes\381b4222-f694-41f0-9685-ff5bb260df2e\4f971e89-eebd-4455-a8de-9e59040e7347\7648efa3-dd9c-4e3e-b566-50f929386280\ACSettingIndex: 0x00000000
HKLM\SYSTEM\CurrentControlSet\Control\Power\User\P owerSchemes\381b4222-f694-41f0-9685-ff5bb260df2e\4f971e89-eebd-4455-a8de-9e59040e7347\7648efa3-dd9c-4e3e-b566-50f929386280\ACSettingIndex: 0x00000002
HKLM\SYSTEM\CurrentControlSet\Control\Power\User\P owerSchemes\381b4222-f694-41f0-9685-ff5bb260df2e\4f971e89-eebd-4455-a8de-9e59040e7347\7648efa3-dd9c-4e3e-b566-50f929386280\DCSettingIndex: 0x00000000
HKLM\SYSTEM\CurrentControlSet\Control\Power\User\P owerSchemes\381b4222-f694-41f0-9685-ff5bb260df2e\4f971e89-eebd-4455-a8de-9e59040e7347\7648efa3-dd9c-4e3e-b566-50f929386280\DCSettingIndex: 0x00000002
HKLM\SYSTEM\CurrentControlSet\Control\Power\User\P owerSchemes\8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c\4f971e89-eebd-4455-a8de-9e59040e7347\7648efa3-dd9c-4e3e-b566-50f929386280\DCSettingIndex: 0x00000000
HKLM\SYSTEM\CurrentControlSet\Control\Power\User\P owerSchemes\8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c\4f971e89-eebd-4455-a8de-9e59040e7347\7648efa3-dd9c-4e3e-b566-50f929386280\DCSettingIndex: 0x00000002
HKLM\SYSTEM\CurrentControlSet\Control\Power\User\P owerSchemes\8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c\4f971e89-eebd-4455-a8de-9e59040e7347\7648efa3-dd9c-4e3e-b566-50f929386280\ACSettingIndex: 0x00000000
HKLM\SYSTEM\CurrentControlSet\Control\Power\User\P owerSchemes\8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c\4f971e89-eebd-4455-a8de-9e59040e7347\7648efa3-dd9c-4e3e-b566-50f929386280\ACSettingIndex: 0x00000002
HKLM\SYSTEM\CurrentControlSet\Control\Power\User\P owerSchemes\a1841308-3541-4fab-bc81-f71556f20b4a\4f971e89-eebd-4455-a8de-9e59040e7347\7648efa3-dd9c-4e3e-b566-50f929386280\DCSettingIndex: 0x00000000
HKLM\SYSTEM\CurrentControlSet\Control\Power\User\P owerSchemes\a1841308-3541-4fab-bc81-f71556f20b4a\4f971e89-eebd-4455-a8de-9e59040e7347\7648efa3-dd9c-4e3e-b566-50f929386280\DCSettingIndex: 0x00000002
HKLM\SYSTEM\CurrentControlSet\Control\Power\User\P owerSchemes\a1841308-3541-4fab-bc81-f71556f20b4a\4f971e89-eebd-4455-a8de-9e59040e7347\7648efa3-dd9c-4e3e-b566-50f929386280\ACSettingIndex: 0x00000000
HKLM\SYSTEM\CurrentControlSet\Control\Power\User\P owerSchemes\a1841308-3541-4fab-bc81-f71556f20b4a\4f971e89-eebd-4455-a8de-9e59040e7347\7648efa3-dd9c-4e3e-b566-50f929386280\ACSettingIndex: 0x00000002
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power\SystemPowerPolicy: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 84 03 00 00 5A 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 01 00 00 00 00 00 00 00 30 2A 00 00 01 00 00 00 01 00 00 00 05 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 2C 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 58 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power\SystemPowerPolicy: 01 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 84 03 00 00 5A 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 01 00 00 00 00 00 00 00 30 2A 00 00 01 00 00 00 01 00 00 00 05 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 2C 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 58 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


Kann mir jemand erklären, was die SystemPowerPolicy ist? Muss da vielleicht etwas angepasst werden, damit mein Tool funktioniert?

lrg0
02.06.2017, 07:06
okay, Problem ist gelöst... ich muss, nach dem die Werte mit 'powercfg -setacvalueindex' gesetzt wurden 'powercfg -s [powerscheme]' ausführen. Dann erspare ich mir den Reboot.

Jetzt muss ich nur noch sicherstellen, dass die Prozesse in meiner Klasse richtig ausgeführt werden.