Я пытаюсь написать небольшую программу на 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.