Der Versuch, Energiepläne unter Windows 7 automatisch zu wechseln

1609
Bezaleel

Ich versuche, ein kleines Programm in VB.NET zu schreiben, das erkennt, wenn mein Laptop vom Stromnetz getrennt wurde, und den Energiesparplan auf Energiesparmodus und umgekehrt umstellt, wenn er an das Stromnetz angeschlossen ist.

Ich habe versucht, es durch die Registrierung mit diesem Code-Snippet zu tun

Select Case power_status.ACLineStatus Case 0 Dim CurrentPowerPlan As String = My.Computer.Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Control").OpenSubKey("Power").OpenSubKey("User").OpenSubKey("PowerSchemes").GetValue("ActivePowerScheme") If CurrentPowerPlan <> "a1841308-3541-4fab-bc81-f71556f20b4a" Then Label1.Text = "Running On Battery" ChangePowerPlan("a1841308-3541-4fab-bc81-f71556f20b4a") 'Power Saver End If Case 1 Dim CurrentPowerPlan As String = My.Computer.Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Control").OpenSubKey("Power").OpenSubKey("User").OpenSubKey("PowerSchemes").GetValue("ActivePowerScheme") If CurrentPowerPlan <> "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c" Then Label1.Text = "Connected To NEPA" ChangePowerPlan("8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c") 'High Performance End If 'Case 255 'MessageBox.Show("Unknown") End Select 

Aber es wirft diesen Fehler zurück

Requested registry access is not allowed. 

Ich habe auch von einer Win32-Funktion `` "PowerSetActiveScheme" `gehört, aber ich weiß nicht, wie ich es VB.NET zuordnen kann.

2

1 Antwort auf die Frage

4
Richard Lucas

Sie können versuchen, einen Shell-Befehl in Ihrer VB.NET-Anwendung auszuführen, um einen Befehl ähnlich dem folgenden zu schälen:

powercfg -SETACTIVE

Gemäß den Informationen in diesem Artikel zu Energieschemas

Wie genau führe ich einen Shell-Befehl aus meiner VB.NET-Anwendung aus? Können Sie mir bitte ein Codeausschnitt zeigen? Bezaleel vor 13 Jahren 0
@ Bezaleel: LMGTFY. `Set oShell = WScript.CreateObject (" WScript.Shell ")` `oShell.run" cmd / K CD C: \ & Dir "` surfasb vor 13 Jahren 0
Je nachdem, welche .NET-Version Sie verwenden, ist dieser Artikel wahrscheinlich ein guter Anfang: http://msdn.microsoft.com/en-us/library/xe736fyk(v=vs.71).aspx Richard Lucas vor 13 Jahren 0