2014-02-24 87 views
0

我正在創建一個GPO來檢查32位和64位計算機上是否存在註冊表值。我寧願只創建一個腳本,而不是兩個腳本。腳本應該檢查一個鍵的值,如果它是一個特定的文本,則退出,如果沒有,則刪除該值。創建GPO,批處理文件或VBS以檢查註冊表是否存在

我以爲註冊查詢會工作,但不會查詢密鑰。

KEY:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectX
或鑰匙:>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectX

VALUE: 00 00 00 09 1A

如果該值存在,離開它,如果沒有,刪除它。

echo off 

reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\CCM\Security<br> 
if %errorlevel% == 1 goto not_64bit 

reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\CCM\Security" /v AllowedRootCAHashCode /t REG_SZ /d "00 00 00 09 1A" 
if %errorlevel% == 0 goto end 
Reg Delete HKLM\SOFTWARE\Wow6432Node\Microsoft\CCM\Security /v AllowedRootCAHashCode /t 
goto end 

:not_64bit 
reg query "HKLM\SOFTWARE\Microsoft\CCM\Security" /v AllowedRootCAHashCode /t REG_SZ /d "00 00 00 09 1A" 
if %errorlevel% == 0 goto end 
Reg Delete HKLM\SOFTWARE\Microsoft\CCM\Security /v AllowedRootCAHashCode /f 

:end 
+0

後你已經嘗試過。 –

+0

嘗試:echo%ERRORLEVEL%查看註冊查詢在退出時正在提升的錯誤級別。 –

+0

是的,但我怎麼能找出它是否是32位,檢查一個鍵,如果它的64位檢查另一個鍵? – OnlyHumain

回答

0

這可能有幫助 - 它沒有測試。

@echo off 

reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\CCM\Security" >nul 2>&1 || goto not_64bit 
reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\CCM\Security" /v AllowedRootCAHashCode /t REG_SZ |find "00 00 00 09 1A" >nul 
if errorlevel 1 Reg Delete "HKLM\SOFTWARE\Wow6432Node\Microsoft\CCM\Security" /v AllowedRootCAHashCode /f 
goto :EOF 

:not_64bit 
reg query "HKLM\SOFTWARE\Microsoft\CCM\Security" /v AllowedRootCAHashCode /t REG_SZ |find "00 00 00 09 1A" >nul 2>&1 && goto :EOF 
Reg Delete "HKLM\SOFTWARE\Microsoft\CCM\Security" /v AllowedRootCAHashCode /f 
+0

這有效,但我需要在第二個最後的聲明「> nul 2>&1」的相反。現在「reg delete」只有在找到字符串中的值時才執行。如果它沒有找到值,我希望它執行。 – OnlyHumain

+0

如果找到字符串,則用'&&'代替'||'來跳過。 – foxidrive

0

這並獲得成功......

@echo off 

reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\CCM\Security" || goto not_64bit 

reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\CCM\Security" /v AllowedRootCAHashCode /t REG_SZ |findstr -i /c:"065fac" || goto 64bitkey 
goto :end 

:64bitkey 
Reg Add "HKLM\SOFTWARE\Wow6432Node\Microsoft\CCM\Security" /v AllowedRootCAHashCode /t REG_SZ /d " " /f 
goto :end 

:not_64bit 
reg query "HKLM\SOFTWARE\Microsoft\CCM\Security" /v AllowedRootCAHashCode /t REG_SZ |findstr -i /c:"065fac" || goto 32bitkey 
goto :end 

:32bitkey 
Reg Add "HKLM\SOFTWARE\Microsoft\CCM\Security" /v AllowedRootCAHashCode /t REG_SZ /d " " /f 

:end 
相關問題