Mencoba untuk mengganti paket daya pada Windows 7 secara otomatis

2

Saya mencoba untuk menulis sebuah program kecil di VB.NET yang mendeteksi ketika laptop saya telah terputus dari sumber listrik dan beralih rencana daya ke penghemat daya dan sebaliknya ketika dicolokkan ke listrik.

Saya mencoba melakukannya melalui registri dengan potongan kode ini

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

Tapi itu mengembalikan kesalahan ini

Requested registry access is not allowed.

Saya juga telah mendengar tentang fungsi Win32 `` "PowerSetActiveScheme" `tetapi saya tidak tahu bagaimana memetakannya ke VB.NET.

Bezaleel
sumber

Jawaban:

4

Anda bisa mencoba menjalankan perintah shell dari aplikasi VB.NET Anda untuk melakukan shell perintah yang serupa dengan yang berikut:

powercfg -SETACTIVE {guidScheme2}

Sesuai informasi dalam artikel ini tentang Skema Daya

Richard Lucas
sumber
Bagaimana tepatnya saya menjalankan perintah shell dari aplikasi VB.NET saya? Dapatkah Anda menunjukkan potongan kode, silakan
Bezaleel
@Bezaleel: LMGTFY. Set oShell = WScript.CreateObject ("WScript.Shell") oShell.run "cmd /K CD C:\ & Dir"
surfasb
Bergantung pada versi .NET yang Anda gunakan, artikel ini mungkin adalah tempat yang baik untuk memulai: msdn.microsoft.com/en-us/library/xe736fyk(v=vs.71).aspx
Richard Lucas