Попытка автоматического переключения планов электропитания в Windows 7

1521
Bezaleel

Я пытаюсь написать небольшую программу на VB.NET, которая определяет, когда мой ноутбук был отключен от электросети, и переключает схему электропитания в режим энергосбережения и наоборот, когда он подключен к сети.

Я попытался сделать это через реестр с помощью этого фрагмента кода

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 

Но это отбрасывает эту ошибку

Requested registry access is not allowed. 

Я также слышал о функции Win32 `` PowerSetActiveScheme ", но я не знаю, как сопоставить ее с VB.NET.

2

1 ответ на вопрос

4
Richard Lucas

Вы можете попробовать запустить команду оболочки из приложения VB.NET, чтобы выполнить команду, подобную следующей:

powercfg -SETACTIVE

Согласно информации в этой статье о схемах питания

Как именно запустить команду оболочки из моего приложения VB.NET? Можете ли вы показать мне фрагмент кода, пожалуйста Bezaleel 13 лет назад 0
@Bezaleel: LMGTFY. `Set oShell = WScript.CreateObject (" WScript.Shell ")` `oShell.run" cmd / K CD C: \ & Dir "` surfasb 13 лет назад 0
В зависимости от того, какую версию .NET вы используете, эта статья, вероятно, является хорошим местом для начала: http://msdn.microsoft.com/en-us/library/xe736fyk(v=vs.71).aspx Richard Lucas 13 лет назад 0