1. 程式人生 > >Secedit:命令列下操作組策略找工具

Secedit:命令列下操作組策略找工具

 
Access=0 >>1.inf
echo AuditPrivilegeUse=0 >>1.inf
echo AuditPolicyChange=0 >>1.inf
echo AuditAccountManage=0 >>1.inf
echo AuditProcessTracking=0 >>1.inf
echo AuditDSAccess=0 >>1.inf
echo AuditAccountLogon=0 >>1.inf
echo AuditLogonEvents=0 >>1.inf
secedit /configure /db 1.sdb /cfg 1.inf /log 1.log /quiet
del 1.*

也許有人會說:組策略不是儲存在登錄檔中嗎,為什麼不直接修改登錄檔?因為不是所有的組策略都儲存在登錄檔中。比如“稽核策略”就不是。你可以用 regsnap比較修改該策略前後登錄檔的變化。我測試的結果是什麼都沒有改變。只有“管理模板”這一部分是完全基於登錄檔的。而且,知道了具體位置,用哪個方法都不復雜。

比如,XP和2003的“本地策略”-》“安全選項”增加了一個“本地帳戶的共享和安全模式”策略。XP下預設的設定是“僅來賓”。這就是為什麼用管理員帳號連線XP的ipc$仍然只有Guest許可權的原因。可以通過匯入reg檔案修改它為“經典”:

echo Windows Registry Editor Version 5.00 >1.reg
echo [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa] >>1.reg
echo "forceguest"=dword:00000000 >>1.reg
regedit /s 1.reg
del 1.reg

而相應的用inf,應該是:

echo [version] >1.inf
echo signature="$CHICAGO$" >>1.inf
echo [Registry Values] >>1.inf
echo MACHINE/System/CurrentControlSet/Control/Lsa/ForceGuest=4,0 >>1.inf
secedit /configure /db 1.sdb /cfg 1.inf /log 1.log
del 1.*

關於命令列下讀取組策略的問題。
系統預設的安全資料庫位於%windir%/security/database/secedit.sdb,將它匯出至inf檔案:

secedit /export /cfg gp.inf /log 1.log

沒有用/db引數指定資料庫就是採用預設的。然後檢視gp.inf。

不過,這樣得到的只是組策略的一部分(即“Windows設定”)。而且,某個策略如果未配置,是不會被匯出的。比如“重命名系統管理員帳戶”,只有被定義了才會在inf檔案中出現NewAdministratorName="xxx"。對於無法匯出的其他的組策略只有通過訪問登錄檔來獲得了。

此辦法在XP和2003下無效——可以匯出但內容基本是空的。原因不明。根據官方的資料,XP和2003顯示組策略用RSoP(組策略結果集)。相應的命令列工具是gpresult。但是,它獲得的是在系統啟動時被附加(來自域)的組策略,單機測試結果還是“空”。所以,如果想知道某些組策略是否被設定,只有先寫一個inf,再用secedit /analyze,然後檢視日誌了。