我正在编写一个cmd批处理文件,该文件查询windows注册表,然后返回一个包含输出的文件。我想查询的密钥是关于SCHANNEL的SSL。
我希望输出读取正确,而不一定是特定的reg值,因此,如果该变量与xyz匹配,则将该值转换为变量,或者将另一个变量设置为“disabled”或echo“SSLv2 is disabled”,从而解释reg值是什么,例如,如果0x1是我希望输出为echo“SSLv2 is disabled”而不是“SSLv2 is 0x1”。
如果根本没有注册表项,我也很难嵌套if语句,即空或空,只显示“SSLv2已启用”。
下面只是客户端SSLv2的一个示例。
For /f "tokens=1-4 delims=/ " %%a in ('date /t') do (set mydate=%%a-%%b-%%c)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)
FOR /F "tokens=* USEBACKQ" %%F IN (`hostname`) DO SET hostname=%%F
set hostnamefolder=%~dp0\%hostname%
mkdir %hostnamefolder%\logs
mkdir %hostnamefolder%\logs\files
mkdir %hostnamefolder%\logs\sceenshots
set workingdir=%~dp0
set Logfile=%hostnamefolder%\%hostname%_BRSIS.txt
set curdir=%~dp0
If Exist %Logfile% Del %Logfile%
@echo On
setlocal ENABLEEXTENSIONS
REM ======================================
REM SSLv2 configuration for Client:
REM ======================================
FOR /F "usebackq skip=2 tokens=1,3" %%A IN (`reg query "HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" /v DisabledByDefault 2^>nul`) DO (
set ValueName=%%A
set ValueValue=%%B
)
echo %valueName%
echo %ValueValue%
if defined ValueName (
if %ValueValue% EQU 0x1 (
echo SSLv2 protocol for client connections is disabled >> %Logfile%
) else (
if %valueValue% EQU 0x0 (
echo SSLv2 protocol for client connections is enabled >> %Logfile%
)) else (
echo SSLv2 protocol for client connections are enabled >> %Logfile%
)
我不是程序员,所以请原谅我的编码,然而,我渴望学习。