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.

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.