2012-06-30 143 views
4

如何腳本,將運行檢查批處理文件是否UAC被啓用如果結果是禁用的:檢查UAC狀態

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System EnableLUA REG_DWORD **0x0**) 

腳本應根據結果運行不同的命令。

回答

1

您可以簡單地用FINDFINDSTR搜索一個或其他值,並根據搜索結果調用命令。該模式基本上是這樣的:

REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA | (
    FIND "0x1" >NUL 
) && (
    command(s)_to_run_when_UAC_is_enabled 
) || (
    command(s)_to_run_when_UAC_is_disabled 
) 

即, REG產生的輸出通過使用「管道」(|)輸入FINDFIND在其輸入中查找0x1,並根據搜索結果執行下列括號內的命令塊之一。

command && command || command是一個標準的機制,允許您選擇性地運行命令,IF的一種替代品。第一個命令產生一個結果。如果結果爲「成功」,則緊接在&&之後的命令運行,並且緊接在||之後的命令在失敗的情況下運行。

如果您需要在這兩種情況下執行的操作,同時使用&&||命令生成的結果後,但如果只有一種結果應反應,你可以離開了無論是&&||

+0

謝謝您的詳細描述!我試圖執行這個,但它似乎並沒有爲我工作。例如,我試過: 'REG QUERY HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System \/v EnableLUA | ( FIND「0x1」> NUL )&&( shutdown -t 0 -r -f )|| ( 命令_to_run_when_UAC_is_disabled )' 我的UAC已啓用,但我的電腦沒有關機,我做錯了什麼? 非常感謝! :) – Perulo

+0

不知道可能是什麼問題,對不起。這是一個複雜的命令,所以首先要提出的是調試每一個部分:確保REG返回你期望的結果,然後看看FIND是否找到了指定的術語(即,嘗試運行它而不用NUL '看看它是否顯示正在搜索的行,接下來,在'&&'之後和'||'之後嘗試使用'ECHO',而不是'shutdown'和其他你想要的命令。 –

+0

我係統中的UAC是禁用,並在我跑完這個後:'REG QUERY HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System \/v EnableLUA | FIND「0x1」> NUL &&(ECHO OK)||(shutdown -t 30 -r - f)',我收到一個通知,說重啓計劃在不到一分鐘的時間內完成,這意味着它按預期工作,目前我無法用'-t 0'測試它,所以不能確定是否有任何問題在上面的複合命令中運行'shutdown -t 0'的限制 –