管理電源選項
出於各種原因,我們希望客戶的電腦在使用 AC 時不休眠。我們一直在執行以下腳本並取得了一定的成功:
powercfg /change standby-timeout-ac 0
但是,該腳本在許多電腦(包括不在域中的電腦)上失敗,並顯示以下錯誤消息:
此電源方案或電源設置存在組策略覆蓋設置。
我意識到這可以通過 GPO 輕鬆解決,但這不是一個可行的解決方案,因為我們的許多客戶都是沒有域的小型企業。有沒有辦法
powercfg
覆蓋本地 GPO?
要麼是“不”,帶有“但是”,要麼是“是”,帶有“但是”。
我們將首先採用“否”的方法 - 不,組策略會否決應用程序所做的配置,而不是相反,這是設計使然。如果你真的想要,通過對相關系統資料庫項進行一些創造性的安全 ACL 應用,你可以禁止
SYSTEM
應用組策略,從而有效地允許你用應用程序覆蓋它們……但是,這是一個非常糟糕的主意。換句話說,是的,因為組策略只是系統資料庫項,您可以使用您選擇的系統資料庫編輯器將它們更改為您想要的內容,並將自己置於一個非常尷尬的狀態,您可以通過阻止
SYSTEM
訪問來有效地覆蓋組策略作為相關組策略的系統資料庫項。但是,有一個更好的方法來解決這個問題,即配置有問題的組策略。(是的,本地組策略與域組策略一樣可編輯。)在這種情況下,您可以使用本地組策略編輯器 (MMC snapin) 編輯設置,但看起來您正在使用腳本選項,這也是可能的。 從您的腳本或命令行呼叫 reg.exe,並讓它將適當的值寫入正確的鍵。在這種情況下,您需要
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power
名為的鍵HibernateEnabled
,其REG_DWORD
值類型為0
。應該如下所示:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Power /v HibernateEnabled /t REG_DWORD /d 0
這將禁用休眠,如果在衝突的組策略執行後完成,將覆蓋組策略設置的任何值。當然,這可能並不理想,因為您必須在每次電腦啟動時執行它,並且您只想在使用交流電源時禁用休眠,因此您可能希望以程式方式編輯組策略中的系統資料庫。找到適當的 reg 鍵的最簡單方法是在 ProcMon 執行時使用本地組策略編輯器更改該設置,並使用它向您顯示您剛剛修改的組策略設置。
(使用 GUI,它位於
Computer Configuration\Administrative Templates\System\Power Management\Sleep Settings
.)一旦您使用 ProcMon 找到了您所追求的密鑰,並且知道將其設置為什麼值,您就可以將其插入
reg.exe
,就像我上面給出的範例一樣,按照您的指定配置本地組策略。作為命令行命令,您將獲得一些可以手動使用的內容,或者根據情況將其粘貼到腳本中。