@echo off title %~nx0 REM ******************************************************************** REM * セキュリティ いろいろチェック REM http://www10.plala.or.jp/palm84/commandline.html REM http://www10.plala.or.jp/palm84/archives/commandline/backup/Security_Check_NOVC.bat.txt REM https://eu7w9wsmf6a74xyjdfzl3q-on.drv.tw/archives/commandline/backup/Security_Check_NOVC.bat.txt REM ******************************************************************** REM ## OS check ver | find "Windows XP" >nul && set osver=xp ver | find "Windows 2000" >nul && set osver=2k ver | find "Version 6.0" >nul && set osver=vista ver | find "Version 6.1" >nul && set osver=seven ver | find "Version 6.2" >nul && set osver=eight REM ## UAC check for %%x in (vista,seven,eight) do ( if "%osver%"=="%%x" ( if /i not "%cd%"=="%windir%\system32" GOTO UAC set "Startup_dir=%AppData%\Microsoft\Windows\Start Menu\Programs\Startup" set "AU_Startup_dir=%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Startup" )) pushd %~dp0 REM ## filever.exe, regini.exe for /f "delims=" %%I in ("filever.exe") do set "sp_tools=%%~$PATH:I" for /f "delims=" %%I in ("regini.exe") do set "exe_regini=%%~$PATH:I" REM ## regperm.exe if exist regperm.exe set exe_regperm=ok if exist .\regperm\regperm.exe ( set exe_regperm=ok path=%cd%\regperm;%path:(x86)=^(x86^)% ) REM ##################################### REM ### Temp file REM ##################################### :PRE_MENU REM ## log set now=%date%_%time% set now=%now: =0% set now=%now:~-20,2%%now:~-17,2%%now:~-14,5%%now:~-8,2%%now:~-5,2% set log=%cd%\Security_Check_%now%.txt REM ## Temp directory set temp_dir=%temp%\%random% mkdir %temp_dir% set reg=%temp_dir%\temp_reg.txt set regx86=%temp_dir%\temp_regx86.txt set tempfile=%temp_dir%\tempfile set uninstall=%temp_dir%\uninstall set uninstallx86=%temp_dir%\uninstallx86 set autorun_check=%temp_dir%\autorun.txt set autorun_check2=%temp_dir%\autorun2.txt set "HKLM=HKEY_LOCAL_MACHINE" set "HKCU=HKEY_CURRENT_USER" set "HKU=HKEY_USERS" if defined sp_tools GOTO MENU REM ##################################### REM ### Warning ! REM ##################################### cls echo: echo ************************************************************* echo ! サポート ツールの filever.exe がないので echo ! WSH(VBScript)でファイルのバージョンをチェックします... echo ************************************************************* echo: echo ************************************************************** echo ! cscript.exe 実行時に、 echo ! ウイルス対策ソフトが!何度も!警告を出すかもしれません echo ! 面倒ですけど一時的に許可して下さい ! echo ************************************************************** echo: echo *** 何かキーを押すと続行します *** pause >nul set vbscript=%temp_dir%\vbscript.vbs if "%osver%"=="2k" ( set FileVersion=18 set ProductVersion=20 ) if "%osver%"=="xp" ( set FileVersion=37 set ProductVersion=39 ) if "%osver%"=="vista" ( set FileVersion=145 set ProductVersion=252 ) if "%osver%"=="seven" ( set FileVersion=156 set ProductVersion=268 ) > "%vbscript%" echo Option Explicit >>"%vbscript%" echo Dim objShellApp >>"%vbscript%" echo Set objShellApp = CreateObject ("Shell.Application") >>"%vbscript%" echo: >>"%vbscript%" echo If WScript.Arguments.Count = 0 Then >>"%vbscript%" echo WScript.Echo "コマンドライン引数が指定されていません" >>"%vbscript%" echo Else >>"%vbscript%" echo MyFileVer >>"%vbscript%" echo End If >>"%vbscript%" echo Set objShellApp = Nothing >>"%vbscript%" echo: >>"%vbscript%" echo Sub MyFileVer >>"%vbscript%" echo Dim objFSO, objFile, objFolder, objFolderItems, objItem >>"%vbscript%" echo Dim strPath, strFileName, strFolder >>"%vbscript%" echo Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") >>"%vbscript%" echo For Each strPath In WScript.Arguments >>"%vbscript%" echo If objFSO.FileExists(strPath) Then >>"%vbscript%" echo Set objFile = objFSO.GetFile(strPath) >>"%vbscript%" echo strFileName = objFSO.GetFileName(strPath) >>"%vbscript%" echo strFolder = objFile.ParentFolder >>"%vbscript%" echo Set objFolder = objShellApp.Namespace(strFolder) >>"%vbscript%" echo Set objFolderItems = objFolder.Items >>"%vbscript%" echo Set objItem = objFolderItems.Item(strFileName) >>"%vbscript%" echo Wscript.Echo objFolder.GetDetailsOf(objItem, 0) >>"%vbscript%" echo Wscript.Echo "File Version : ", objFolder.GetDetailsOf(objItem, %FileVersion%) >>"%vbscript%" echo Wscript.Echo "Product Version : ", objFolder.GetDetailsOf(objItem, %ProductVersion%) >>"%vbscript%" echo Wscript.Echo "最終更新日時 : ", objFolder.GetDetailsOf(objItem, 3) >>"%vbscript%" echo End If >>"%vbscript%" echo Next >>"%vbscript%" echo Set objFSO = Nothing >>"%vbscript%" echo End Sub GOTO MENU REM ##################################### REM ### SubRoutine FileVersion REM ##################################### :FILE_VER if exist "%filename%" ( >>"%log%" echo: echo %filename:(x86)=^(x86^)% >>"%log%" echo %filename:(x86)=^(x86^)% if defined sp_tools ( >>"%log%" (filever /v "%filename:(x86)=^(x86^)%" | findstr /i "Version FileDescription") ) else ( >>"%log%" cscript.exe //nologo "%vbscript%" "%filename%" )) exit /b REM ##################################### REM ### MENU REM ##################################### :MENU set select= cls echo: echo ************************************************************* echo ***** ***** echo * === * 簡易セキュリティチェーック! === * echo * === * 下記をログに書き出しします! === * echo ***** ***** echo * === 0. * 未入力Enter だとぜんぶ!シマス === * echo * === 2. アンインストール項目のリストアップ === * echo * === 3. スタートアップ フォルダのリストアップ === * echo * === 4. autorun.inf の存在チェック === * echo * === 5. レジストリの自動起動項目のリストアップ === * echo ***** ***** echo * === REG(reg). * Regedit を有効に再設定 * === * echo * === REG2(reg2). * Regedit を有効に再設定 その2 * === * echo * === 99. * 終了する * === * echo ************************************************************* echo: echo ***** どれ行きまひょ? 数字を入力シテおくんなまし ***** echo: set /p select= [0,1,2,3,4,5,99] : echo: if "%select%"=="99" GOTO CLEAN if "%select%"=="" GOTO OS_CHECK if "%select%"=="0" GOTO OS_CHECK if "%select%"=="2" set log=%cd%\Security_Uninst_%now%.txt && GOTO OS_CHECK if "%select%"=="3" set log=%cd%\Security_StartUP_%now%.txt && GOTO OS_CHECK if "%select%"=="4" set log=%cd%\Security_Autoruninf_%now%.txt && GOTO OS_CHECK if "%select%"=="5" set log=%cd%\Security_Reg_%now%.txt && GOTO OS_CHECK if /i "%select%"=="reg" GOTO CHECK_REG if /i "%select%"=="reg2" GOTO CHECK_REG if /i "%select%"=="reg3" GOTO CHECK_REG GOTO MENU REM ##################################### REM ### OS Check REM ##################################### :OS_CHECK > "%log%" echo ============================================================ >>"%log%" echo *** 調査日時 %date:~-10,10% %time:~-11,5% *** >>"%log%" echo ============================================================ cls echo: echo * OS名をチェックしています..... echo: set reg_sp=%temp_dir%\reg_sp.txt set reg_xphome=%temp_dir%\reg_xphome.txt REM ## OS Name if "%osver%"=="2k" set "osname=Microsoft Windows 2000" if "%osver%"=="xp" set "osname=Microsoft Windows XP" if "%osver%"=="vista" set "osname=Microsoft Windows Vista" if "%osver%"=="seven" set "osname=Microsoft Windows 7" if "%osver%"=="eight" set "osname=Microsoft Windows 8" REM ## Service Pack version regedit /s /e "%reg_sp%" "%HKLM%\SOFTWARE\Microsoft\Windows NT\CurrentVersion" if not exist "%reg_sp%" GOTO ERRO_REG if "%osname%"=="Microsoft Windows 7" ( for /f "usebackq skip=2 tokens=2 delims==" %%x in (`find /i "ProductName""=""Windows 7" "%reg_sp%"`) do set "osname=Microsoft %%~x" ) if "%osname%"=="Microsoft Windows Vista" ( for /f "usebackq skip=2 tokens=2 delims==" %%x in (`find /i "ProductName""=""Windows Vista" "%reg_sp%"`) do set "osname=Microsoft %%~x" ) for /f "usebackq skip=2 tokens=2 delims==" %%x in (`find /i "CSDVersion""=""Service Pack" "%reg_sp%"`) do set spnumber=%%~x if not "%osname%"=="Microsoft Windows XP" GOTO OS_WRITE REM ## XP Home Edition or XP Professional regedit /s /e "%reg_xphome%" "%HKLM%\SYSTEM\CurrentControlSet\Control\ProductOptions" find /i "ProductSuite""=hex(7):50,00,65" "%reg_xphome%">nul if ERRORLEVEL 1 ( set "osname=Microsoft Windows XP Professional" ) Else ( set "osname=Microsoft Windows XP Home Edition" ) :OS_WRITE >>"%log%" echo: >>"%log%" echo %osname% %spnumber% >>"%log%" echo: REM ##################################### REM ### hostsファイルチェック REM ##################################### echo: echo * hostsファイルをチェックしています..... echo: >>"%log%" echo ---------------------------------------- >>"%log%" echo * %windir%\system32\drivers\etc\hosts >>"%log%" echo ---------------------------------------- >>"%log%" (findstr /v /b # "%windir%\system32\drivers\etc\hosts") >>"%log%" echo: REM ##################################### REM ### DNSサーバ アドレス REM ##################################### echo: echo * DNSサーバ アドレスをチェックしています..... echo: regedit /e "%tempfile%dns" "%HKLM%\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" >>"%log%" echo ---------------------------------------- >>"%log%" echo * NameServer (DNSサーバ アドレス) >>"%log%" echo ---------------------------------------- >>"%log%" (type "%tempfile%dns" | findstr /i NameServer | findstr /i /v \"NameServer\"=\"\") >>"%log%" echo: REM ##################################### REM ### IE Version Check REM ##################################### set reg_ie=%temp_dir%\reg_ie.txt set "IE_Pathx86=%ProgramFiles(x86)%\Internet Explorer\iexplore.exe" set "IE_Path=%ProgramFiles%\Internet Explorer\iexplore.exe" set "IE_Reg_Pathx86=%HKLM%\SOFTWARE\Wow6432Node\\Microsoft\Internet Explorer" set "IE_Reg_Path=%HKLM%\SOFTWARE\Microsoft\Internet Explorer" set "IE_Set_Pathx86=%HKLM%\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings" set "IE_Set_Path=%HKLM%\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" >>"%log%" echo ============================================================ >>"%log%" echo *** Internet Explorer >>"%log%" echo ============================================================ >>"%log%" echo http://www.microsoft.com/japan/windows/products/winfamily/ie/default.mspx >>"%log%" echo http://www.microsoft.com/japan/windows/downloads/ie/getitnow.mspx >>"%log%" echo ------------------------------------------------------------ echo: echo * Internet Explorer のバージョンをチェックしています..... echo: >>"%log%" echo * プログラムバージョン set "filename=%IE_Pathx86%" && call :FILE_VER set "filename=%IE_Path%" && call :FILE_VER >>"%log%" echo: if defined ProgramFiles(x86) ( regedit /s /e /a "%reg_ie%" "%IE_Reg_Pathx86%" >>"%log%" echo [%IE_Reg_Pathx86%] >>"%log%" findstr /i \"Version\"=\"[678]\.[0-9]\.[0-9] "%reg_ie%" >>"%log%" echo: ) if defined ProgramFiles(x86) ( regedit /s /e /a "%reg_ie%" "%IE_Set_Pathx86%" >>"%log%" echo [%IE_Set_Pathx86:(x86)=^(x86^)%] >>"%log%" findstr /i /b \"MinorVersion\" "%reg_ie%" >>"%log%" echo: ) regedit /s /e /a "%reg_ie%" "%IE_Reg_Path%" >>"%log%" echo [%IE_Reg_Path%] >>"%log%" findstr /i \"Version\"=\"[678]\.[0-9]\.[0-9] "%reg_ie%" >>"%log%" echo: regedit /s /e /a "%reg_ie%" "%IE_Set_Path%" >>"%log%" echo [%IE_Set_Path%] >>"%log%" findstr /i /b \"MinorVersion\" "%reg_ie%" >>"%log%" echo: REM ##################################### REM ### Firefox Version Check REM ##################################### set reg_fx=%temp_dir%\reg_fx set reg_fx_key="%HKLM%\SOFTWARE\Mozilla\Mozilla Firefox" set reg_fxx86=%temp_dir%\reg_fxx86 set reg_fx_keyx86="%HKLM%\SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox" >>"%log%" echo ============================================================ >>"%log%" echo *** Mozilla Firefox >>"%log%" echo ============================================================ >>"%log%" echo http://mozilla.jp/firefox/ >>"%log%" echo ------------------------------------------------------------ echo: echo * Mozilla Firefox のバージョンをチェックしています..... echo: regedit /s /e /a "%uninstall%" "%HKLM%\Software\Microsoft\Windows\CurrentVersion\Uninstall" if defined ProgramFiles(x86) ( regedit /s /e /a "%uninstallx86%" "%HKLM%\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" ) :x86 >>"%log%" echo * Uninstall リストから >>"%log%" (findstr /i /c:"Mozilla Firefox" "%uninstall%" | findstr /i DisplayName) if ERRORLEVEL 1 set fx=none if defined ProgramFiles(x86) GOTO FX_x64 if "%fx%"=="none" ( >>"%log%" echo Firefox はインストールされていません。 >>"%log%" echo あるいは、インストーラを実行していないのでレジストリにありません。 GOTO OPERA ) GOTO FX_REG :FX_x64 >>"%log%" (findstr /i /c:"Mozilla Firefox" "%uninstallx86%" | findstr /i DisplayName) if ERRORLEVEL 1 ( if "%fx%"=="none" ( >>"%log%" echo Firefox はインストールされていません。 >>"%log%" echo あるいは、インストーラを実行していないのでレジストリにありません。 GOTO OPERA )) :FX_REG >>"%log%" echo: >>"%log%" echo * レジストリ から REM # CurrentVersion regedit /s /e /a "%reg_fx%" %reg_fx_key% if exist "%reg_fx%" ( >>"%log%" findstr /i CurrentVersion "%reg_fx%" >>"%log%" findstr /i @ "%reg_fx%" ) if defined ProgramFiles(x86) ( regedit /s /e /a "%reg_fxx86%" %reg_fx_keyx86% if exist "%reg_fxx86%" ( >>"%log%" echo = ^(x86^) = >>"%log%" findstr /i CurrentVersion "%reg_fxx86%" >>"%log%" findstr /i @ "%reg_fxx86%" >>"%log%" echo: )) REM # Program version >>"%log%" echo * プログラムバージョン set "filename=%ProgramFiles%\Mozilla Firefox\firefox.exe" && call :FILE_VER if defined ProgramFiles(x86) ( set "filename=%ProgramFiles(x86)%\Mozilla Firefox\firefox.exe" && call :FILE_VER ) >>"%log%" echo: GOTO OPERA REM ## 複数バージョンチェック REM set count=0 REM for /f "usebackq delims=" %%x in (`findstr /i \\Main^] "%reg_fx%"`) do ( REM set "fx_temp=%%x" && call :FX_REG REM ) REM GOTO FX_LOG REM :FX_REG REM set /a count=count+1 REM set fx_temp=%fx_temp:[=% REM set fx_temp=%fx_temp:]=% REM set fxkey_%count%="%fx_temp%" REM exit /b REM REM :FX_LOG REM setlocal enabledelayedexpansion REM for /l %%x in (1,1,3) do ( REM if defined fxkey_%%x ( REM regedit /e /a "%reg_fx%_%%x" !fxkey_%%x! REM for /f "usebackq tokens=2 delims==" %%y in (`findstr /i \"PathToExe\" "%reg_fx%_%%x"`) do ( REM set "fx_%%x=%%~y" REM set "filename=!fx_%%x:\\=\!" && call :FILE_VER) REM )) REM endlocal REM >>"%log%" echo: REM ##################################### REM ### OPERA Version Check REM ##################################### :OPERA >>"%log%" echo ============================================================ >>"%log%" echo *** Opera >>"%log%" echo ============================================================ >>"%log%" echo http://jp.opera.com/download/ >>"%log%" echo http://jp.opera.com/docs/changelogs/windows/ >>"%log%" echo http://jp.opera.com/download/ >>"%log%" echo ------------------------------------------------------------ echo: echo * Opera のバージョンをチェックしています..... echo: >>"%log%" echo * Uninstall リストから >>"%log%" (findstr /i /c:"Opera " "%uninstall%" | findstr /i DisplayName) if ERRORLEVEL 1 set Opera_File=none if defined ProgramFiles(x86) GOTO Operax64 if "%Opera_File%"=="none" ( >>"%log%" echo Opera はインストールされていません。 >>"%log%" echo あるいは、インストーラを実行していないのでレジストリにありません。 >>"%log%" echo: GOTO OS_END ) GOTO OperaExe :Operax64 >>"%log%" (findstr /i /c:"Opera " "%uninstallx86%" | findstr /i DisplayName) if ERRORLEVEL 1 ( if "%Opera_File%"=="none" ( >>"%log%" echo Opera はインストールされていません。 >>"%log%" echo あるいは、インストーラを実行していないのでレジストリにありません。 >>"%log%" echo: GOTO OS_END )) :OperaExe >>"%log%" echo: REM # Program version >>"%log%" echo * プログラムバージョン set "filename=%ProgramFiles%\Opera\Opera.exe" && call :FILE_VER if defined ProgramFiles(x86) ( set "filename=%ProgramFiles(x86)%\Opera\Opera.exe" && call :FILE_VER ) :OS_END if "%select%"=="2" GOTO UNINST if "%select%"=="3" GOTO CH_START if "%select%"=="4" GOTO AUTO_RUN if "%select%"=="5" GOTO REG_LIST REM ##################################### REM ### 2.アンインストール リスト REM ##################################### :UNINST if "%select%"=="1" GOTO CLEAN >>"%log%" echo: >>"%log%" echo ============================================================ >>"%log%" echo *** アンインストール リスト >>"%log%" echo ============================================================ cls echo: echo * アンインストール リストをエクスポートしています..... echo: if not exist "%uninstall%" ( regedit /s /e /a "%uninstall%" "%HKLM%\Software\Microsoft\Windows\CurrentVersion\Uninstall" ) for /f "usebackq tokens=2 delims==" %%x in (`findstr /i /b \"displayname\" "%uninstall%" ^| findstr /v \"\"`) do echo %%~x>>"%uninstall%0" >>"%log%" sort "%uninstall%0" if defined ProgramW6432 ( >>"%log%" echo ============================= >>"%log%" echo ***** ^(32bit^) アンインストール リスト >>"%log%" echo ============================= for /f "usebackq tokens=2 delims==" %%x in (`findstr /i /b \"displayname\" "%uninstallx86%" ^| findstr /v \"\"`) do echo %%~x>>"%uninstall%1" >>"%log%" sort "%uninstall%1" ) REM ##################################### REM ### 3.スタートアップのチェック REM ##################################### :CH_START if "%select%"=="1" GOTO CLEAN if "%select%"=="2" GOTO CLEAN cls echo: echo * スタートアップ フォルダをチェックしています..... echo: if not defined Startup_dir ( set "Startup_dir=%USERPROFILE%\スタート メニュー\プログラム\スタートアップ" set "AU_Startup_dir=%ALLUSERSPROFILE%\スタート メニュー\プログラム\スタートアップ" ) >>"%log%" echo: >>"%log%" echo ============================================================ >>"%log%" echo *** スタートアップ フォルダ >>"%log%" echo ============================================================ >>"%log%" echo: >>"%log%" echo %Startup_dir% >>"%log%" echo: >>"%log%" dir /a /b "%Startup_dir%" >>"%log%" echo: >>"%log%" echo ============================================================ >>"%log%" echo *** All Users スタートアップ フォルダ >>"%log%" echo ============================================================ >>"%log%" echo: >>"%log%" echo %AU_Startup_dir% >>"%log%" echo: >>"%log%" dir /a /b "%AU_Startup_dir%" >>"%log%" echo: REM ##################################### REM ### 4.autorun.inf のチェック REM ##################################### :AUTO_RUN cls echo: echo * autorun.inf をチェックしています..... echo: >>"%log%" echo ============================================================ >>"%log%" echo *** autorun.inf のチェック >>"%log%" echo ============================================================ >>"%log%" echo: for %%x in (C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do ( dir /a/b %%x:\ >nul 2>nul && if exist %%x:\autorun.inf echo %%x:>>"%autorun_check%" ) if not exist "%autorun_check%" GOTO NO_AUTO if "%osver%"=="2k" GOTO WIN2K REM ### REG.EXE で CD-ROMじゃないの? のチェック :REGEXE for /f "usebackq" %%x in ("%autorun_check%") do reg query HKLM\SYSTEM\MountedDevices | findstr 4300640052006F006D00 | findstr DosDevices\%%x >nul || echo %%x\autorun.inf>>"%autorun_check2%" if not exist "%autorun_check2%" GOTO NO_AUTO for /f "usebackq delims=" %%x in ("%autorun_check2%") do ( attrib -s -h -r "%%x" >>"%log%" echo %%x が存在します! >>"%log%" echo --------------- >>"%log%" type %%x >>"%log%" echo: >>"%log%" echo --------------- ren "%%x" autorun%random%.bak copy nul "%%x" >nul attrib +r "%%x" ) >>"%log%" echo: >>"%log%" echo (CD/DVD 以外に) autorun.inf があったので、 >>"%log%" echo 念の為に!、autorun[乱数].bak にリネームし、 >>"%log%" echo 空の読み取り専用 autorun.inf を作成しました。 >>"%log%" echo 自分で作成したものでないなら、 >>"%log%" echo ウイルスに感染している可能性があります。 >>"%log%" echo: GOTO REG_LIST REM ### Win 2k では REG.EXE がないという罠 ### :WIN2K if exist "%ProgramFiles%\Support Tools\reg.exe" GOTO REGEXE for /f "usebackq" %%x in ("%autorun_check%") do ( >>"%log%" echo %%x\autorun.inf が存在します! >>"%log%" echo --------------- >>"%log%" type %%x\autorun.inf >>"%log%" echo: >>"%log%" echo --------------- ) >>"%log%" echo: >>"%log%" echo autorun.inf がありました。 >>"%log%" echo 正常なCD/DVDなら多分問題なし。 >>"%log%" echo CD/DVDでなく、自分で作成したものでもないなら >>"%log%" echo ウイルスに感染しているかもしれません。 >>"%log%" echo: GOTO REG_LIST REM ### not exist autorun.inf ### :NO_AUTO >>"%log%" echo autorun.inf はありません。 >>"%log%" echo: REM ##################################### REM ### 5.レジストリ リスト作成 REM ##################################### :REG_LIST if "%select%"=="1" GOTO CLEAN if "%select%"=="2" GOTO CLEAN if "%select%"=="3" GOTO CLEAN if "%select%"=="4" GOTO CLEAN cls echo: echo * レジストリ リスト作成しています..... echo: REM >>"%reg%" echo REM >>"%reg%" echo REM >>"%reg%" echo >>"%log%" echo ============================================================ >>"%log%" echo *** レジストリ リスト >>"%log%" echo ============================================================ >>"%reg%" echo %HKLM%\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf >>"%reg%" echo %HKCU%\Software\Microsoft\Windows\CurrentVersion\Policies >>"%reg%" echo %HKLM%\SOFTWARE\Microsoft\Windows\CurrentVersion\policies >>"%reg%" echo %HKU%\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies >>"%reg%" echo %HKCU%\Software\Microsoft\Windows\CurrentVersion\Run >>"%reg%" echo %HKCU%\Software\Microsoft\Windows\CurrentVersion\RunOnce >>"%reg%" echo %HKLM%\SOFTWARE\Microsoft\Windows\CurrentVersion\Run >>"%reg%" echo %HKLM%\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce >>"%reg%" echo %HKU%\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run >>"%reg%" echo %HKCU%\Software\Microsoft\Windows NT\CurrentVersion\Windows >>"%reg%" echo %HKCU%\Software\Microsoft\Windows NT\CurrentVersion\Winlogon >>"%reg%" echo %HKLM%\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows >>"%reg%" echo %HKLM%\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon >>"%reg%" echo %HKLM%\SOFTWARE\Classes\comfile\shell\open\command >>"%reg%" echo %HKLM%\SOFTWARE\Classes\exefile\shell\open\command >>"%reg%" echo %HKLM%\SOFTWARE\Classes\htafile\shell\open\command >>"%reg%" echo %HKLM%\SOFTWARE\Classes\piffile\shell\open\command >>"%reg%" echo %HKLM%\SOFTWARE\Classes\regfile\shell\open\command >>"%reg%" echo %HKLM%\SOFTWARE\Classes\scrfile\shell\open\command >>"%reg%" echo %HKLM%\SOFTWARE\Classes\txtfile\shell\open\command REM ## 関連付け変更分をチェック echo: echo * 関連付け変更分をチェックしています..... echo: for %%x in (com,exe,hta,pif,reg,scr,txt) do ( regedit /e /a "%tempfile%_%%x" "%HKLM%\SOFTWARE\Classes\.%%x") for %%x in (com,exe,hta,pif,reg,scr,txt) do ( for /f "usebackq tokens=2 delims==" %%y in (`findstr @ "%tempfile%_%%x" ^| findstr /v {`) do (set %%x_reg=%%~y)) setlocal enabledelayedexpansion for %%x in (com,exe,hta,pif,reg,scr,txt) do ( if not "!%%x_reg!"=="%%xfile" ( >>"%reg%" echo %HKLM%\SOFTWARE\Classes\.%%x >>"%reg%" echo %HKLM%\SOFTWARE\Classes\!%%x_reg!\shell\open\command)) endlocal REM ### Regedit 実行 echo: echo * レジストリ Image File Execution Options キーを調べます..... echo: set cnt=100 set reg_ImageEx=%HKLM%\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options regedit /s /e "%tempfile%ImegeEx" "%reg_ImageEx%" if not exist "%tempfile%ImegeEx" GOTO ERRO_REG for %%x in (regedit,regedt32,rundll32,taskmgr,msconfig,notepad,reg,regini,regperm,explorer,iexplore,excel,winword,outlook,msimn,cmd,helpctr,firefox,procexp,HijackThis,Combofix,wscript,cscript,vb6) do ( find /i "%reg_ImageEx%\%%x.exe" "%tempfile%ImegeEx" >nul if not ERRORLEVEL 1 ( set temp_reg="%reg_ImageEx%\%%x.exe" call :EXPORT) ) echo: echo * レジストリをエクスポートしています..... echo: for /f "usebackq delims=" %%x in ("%reg%") do set temp_reg="%%x" && call :EXPORT :KETUGOU pushd %temp_dir% for /f "usebackq delims=" %%x in (`dir /b %tempfile%_1*`) do ( >>"%log%" type "%%x") popd set "Drivers32=%HKLM%\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32" set "Drivers32x86=%HKLM%\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Drivers32" >>"%log%" echo ============================================================ >>"%log%" echo ***** %Drivers32% >>"%log%" echo ============================================================ >>"%log%" reg query "%Drivers32%" if not defined ProgramW6432 GOTO CLEAN >>"%log%" echo ============================================================ >>"%log%" echo *** ^(32bit^) レジストリ リスト >>"%log%" echo ============================================================ >>"%regx86%" echo %HKLM%\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf >>"%regx86%" echo %HKLM%\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\policies >>"%regx86%" echo %HKCU%\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run >>"%regx86%" echo %HKCU%\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce >>"%regx86%" echo %HKLM%\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run >>"%regx86%" echo %HKLM%\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce >>"%regx86%" echo %HKU%\.DEFAULT\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run >>"%regx86%" echo %HKLM%\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows >>"%regx86%" echo %HKLM%\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon set cnt=200 for /f "usebackq delims=" %%x in ("%regx86%") do set temp_reg="%%x" && call :EXPORT pushd %temp_dir% for /f "usebackq delims=" %%x in (`dir /b %tempfile%_2*`) do ( >>"%log%" type "%%x") popd >>"%log%" echo ============================================================ >>"%log%" echo ***** %Drivers32x86% >>"%log%" echo ============================================================ >>"%log%" reg query "%Drivers32x86%" GOTO CLEAN REM ##################################### REM ### SubRoutine EXPORT REM ##################################### :EXPORT set /a cnt=cnt+1 > "%tempfile%0" echo ============================================================ >>"%tempfile%0" echo ***** %temp_reg:"=% >>"%tempfile%0" echo ============================================================ regedit /s /e "%tempfile%1" %temp_reg% type "%tempfile%1">"%tempfile%2" copy "%tempfile%0" + "%tempfile%2" "%tempfile%_%cnt%" >nul if exist "%tempfile%1" del /f "%tempfile%1" exit /b REM ##################################### REM ### 一時ファイルの削除 REM ##################################### :CLEAN cls echo: echo * 一時ファイルを削除します..... echo: rd /s /q "%temp_dir%" if "%select%"=="99" GOTO :EOF >>"%log%" echo: GOTO DONE REM ##################################### REM ### CHECK Regini.exe, Regperm.exe REM ##################################### :CHECK_REG if defined exe_regperm GOTO REGPERM1 if defined exe_regini GOTO REGINI1 if /i "%select%"=="reg" GOTO ENABLE_1 if /i "%select%"=="reg2" GOTO ENABLE_2 if /i "%select%"=="reg3" GOTO ENABLE_3 REM ##################################### REM ### REG. Regini.exe REM ##################################### :REGINI1 cls echo: echo * Regini.exe を実行 ..... echo * Image File Execution Options の不正キーに削除許可..... echo: set RegIniFile=%temp_dir%\regini set Ini_RegeditExe=\registry\machine\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\regedit.exe set Ini_RegeditCom=\registry\machine\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\regedit.com > "%RegIniFile%" echo %Ini_RegeditExe% [1 17] >>"%RegIniFile%" echo %Ini_RegeditCom% [1 17] regini "%RegIniFile%" if /i "%select%"=="reg" GOTO ENABLE_1 if /i "%select%"=="reg2" GOTO ENABLE_2 if /i "%select%"=="reg3" GOTO ENABLE_3 REM ##################################### REM ### REG. Regperm.exe REM ##################################### :REGPERM1 cls echo: echo * Regparm.exe を実行 ..... echo * Image File Execution Options の不正キーに削除許可..... echo: set RP_RegeditExe=%HKLM%\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\regedit.exe set RP_RegeditCom=%HKLM%\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\regedit.com regperm /K "%RP_RegeditExe%" /A:System:F /A:Administrators:F /R regperm /K "%RP_RegeditCom%" /A:System:F /A:Administrators:F /R if /i "%select%"=="reg" GOTO ENABLE_1 if /i "%select%"=="reg2" GOTO ENABLE_2 if /i "%select%"=="reg3" GOTO ENABLE_3 REM ##################################### REM ### REG. Enable Regedit. INF file REM ##################################### :ENABLE_1 cls echo: echo * レジストリ エディタの有効化 ..... echo * infファイルを作成して rundll32 を実行します..... echo: set INF_File=%tempfile%REG.inf REM ## Write INF file -- enable Regedit > "%INF_File%" echo [Version] >>"%INF_File%" echo Signature="$Chicago$" >>"%INF_File%" echo: >>"%INF_File%" echo [DefaultInstall] >>"%INF_File%" echo DelReg=UnhookRegHKCU >>"%INF_File%" echo DelReg=UnhookRegHKLM >>"%INF_File%" echo DelReg=UnhookRegHKU_D >>"%INF_File%" echo: >>"%INF_File%" echo [UnhookRegHKCU] >>"%INF_File%" echo HKCU, Software\Microsoft\Windows\CurrentVersion\Policies\System,DisableRegistryTools >>"%INF_File%" echo: >>"%INF_File%" echo [UnhookRegHKLM] >>"%INF_File%" echo HKLM, Software\Microsoft\Windows\CurrentVersion\Policies\System,DisableRegistryTools >>"%INF_File%" echo: >>"%INF_File%" echo [UnhookRegHKU_D] >>"%INF_File%" echo HKU, .DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\System,DisableRegistryTools REM ## Rundll32.exe run -- enable Regedit rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 %tempfile%REG.inf REM ## Write INF file -- delete ImageEx Debugger Entry > "%INF_File%" echo [Version] >>"%INF_File%" echo Signature="$Chicago$" >>"%INF_File%" echo: >>"%INF_File%" echo [DefaultInstall] >>"%INF_File%" echo DelReg=ImageExRegedit >>"%INF_File%" echo DelReg=ImageExRegeditCom >>"%INF_File%" echo: >>"%INF_File%" echo [ImageExRegedit] >>"%INF_File%" echo HKLM, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\regedit.exe",Debugger >>"%INF_File%" echo: >>"%INF_File%" echo [ImageExRegeditCom] >>"%INF_File%" echo HKLM, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\regedit.com",Debugger REM ## Rundll32.exe run -- delete ImageEx Debugger Entry rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 %tempfile%REG.inf REM ## Write INF file -- delete ImageEx Regedit.exe key > "%INF_File%" echo [Version] >>"%INF_File%" echo Signature="$Chicago$" >>"%INF_File%" echo: >>"%INF_File%" echo [DefaultInstall] >>"%INF_File%" echo DelReg=ImageExRegedit >>"%INF_File%" echo: >>"%INF_File%" echo [ImageExRegedit] >>"%INF_File%" echo HKLM, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\regedit.exe" REM ## Rundll32.exe run -- delete ImageEx Regedit.exe key rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 %tempfile%REG.inf REM ## Write INF file -- delete ImageEx Regedit.com key > "%INF_File%" echo [Version] >>"%INF_File%" echo Signature="$Chicago$" >>"%INF_File%" echo: >>"%INF_File%" echo [DefaultInstall] >>"%INF_File%" echo DelReg=ImageExRegeditCom >>"%INF_File%" echo: >>"%INF_File%" echo [ImageExRegeditCom] >>"%INF_File%" echo HKLM, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\regedit.com" REM ## Rundll32.exe run -- delete ImageEx Regedit.com key rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 %tempfile%REG.inf echo: echo: echo *** エラー画面が出なければ再設定は成功しているはずです *** echo: echo *** ! 但し、Windows 2000 では、 *** echo *** ! Windows\Regedt32.exe をリネームコピーして実行、 *** echo *** ! 該当不正キーへのアクセス許可が必要かもしれません *** echo: echo *** ! *** または、Regperm.exe をここにコピーして *** echo *** ! *** 再度試してクダサイ *** echo: echo *** 何かキーを押すとメニューに戻ります *** echo: pause >nul GOTO MENU REM ##################################### REM ### REG2. Enable Regedit. Copy + Rename REM ##################################### :ENABLE_2 cls echo: echo * レジストリ エディタの有効化 ..... echo * Regedit.exe をリネームコピーして実行します..... echo: set regedit2=regedit_%random%.exe set reg2file=%tempfile%REGEDIT2 copy %windir%\regedit.exe %windir%\%regedit2% >nul REM ## Write Reg File set "RegPolicies_SubKey=Software\Microsoft\Windows\CurrentVersion\Policies\System" set "RegImageExKey=%HKLM%\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" > "%reg2file%" echo REGEDIT4 >>"%reg2file%" echo [%HKCU%\%RegPolicies_SubKey%] >>"%reg2file%" echo "DisableRegistryTools"=- >>"%reg2file%" echo: >>"%reg2file%" echo [%HKLM%\%RegPolicies_SubKey%] >>"%reg2file%" echo "DisableRegistryTools"=- >>"%reg2file%" echo [%HKU%\.DEFAULT\%RegPolicies_SubKey%] >>"%reg2file%" echo "DisableRegistryTools"=- >>"%reg2file%" echo: >>"%reg2file%" echo [%RegImageExKey%\regedit.exe] >>"%reg2file%" echo "Debugger"=- >>"%reg2file%" echo: >>"%reg2file%" echo [%RegImageExKey%\regedit.com] >>"%reg2file%" echo "Debugger"=- >>"%reg2file%" echo: >>"%reg2file%" echo [-%RegImageExKey%\regedit.exe] >>"%reg2file%" echo: >>"%reg2file%" echo [-%RegImageExKey%\regedit.com] REM ## Regedit2.exe run %windir%\%regedit2% /s "%reg2file%" del %windir%\%regedit2% >nul echo: echo: echo *** エラー画面が出なければ再設定は成功しているはずです *** echo: echo *** ! 但し、Windows 2000 では、 *** echo *** ! Windows\Regedt32.exe をリネームコピーして実行、 *** echo *** ! 該当不正キーへのアクセス許可が必要かもしれません *** echo: echo *** ! *** または、Regperm.exe をここにコピーして *** echo *** ! *** 再度試してクダサイ *** echo: echo: echo *** 何かキーを押すとメニューに戻ります *** echo: pause >nul GOTO MENU REM ##################################### REM ### REG3. VBScript RegDelete REM ##################################### :ENABLE_3 cls echo: echo * VBScript を実行 ..... echo * 不正キーの削除..... echo * レジストリ エディタの有効化..... echo: set vbfile=%tempfile%wsh.vbs set "RegPolicies_SubKey=Software\Microsoft\Windows\CurrentVersion\Policies\System" set "RegImageExKey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" > "%vbfile%" echo Option Explicit >>"%vbfile%" echo On Error Resume Next >>"%vbfile%" echo Dim objWS >>"%vbfile%" echo Set objWS = WScript.CreateObject("WScript.Shell") >>"%vbfile%" echo ' Policies キー >>"%vbfile%" echo Dim strKeyPol1,strKeyPol2,strKeyPol3 >>"%vbfile%" echo strKeyPol1 = "HKCU\%RegPolicies_SubKey%\" >>"%vbfile%" echo strKeyPol2 = "HKLM\%RegPolicies_SubKey%\" >>"%vbfile%" echo strKeyPol3 = "%HKU%\.DEFAULT\%RegPolicies_SubKey%\" >>"%vbfile%" echo ' 値エントリ名 >>"%vbfile%" echo Dim strEntry >>"%vbfile%" echo strEntry = "DisableRegistryTools" >>"%vbfile%" echo ' 値エントリを削除 >>"%vbfile%" echo objWS.RegDelete strKeyPol1 ^& strEntry >>"%vbfile%" echo objWS.RegDelete strKeyPol2 ^& strEntry >>"%vbfile%" echo objWS.RegDelete strKeyPol3 ^& strEntry >>"%vbfile%" echo: >>"%vbfile%" echo 'Image File Execution Options キーの不正キー または、値エントリ削除 >>"%vbfile%" echo Dim strEXEname,I >>"%vbfile%" echo strEXEname = Array("regedit.exe", "regedit.com") >>"%vbfile%" echo Const strKey = "%RegImageExKey%\" >>"%vbfile%" echo For Each I In (strEXEname) >>"%vbfile%" echo On Error Resume Next >>"%vbfile%" echo objWS.RegRead strKey ^& I ^& "\" >>"%vbfile%" echo If Err.Number = 0 Then >>"%vbfile%" echo Err.Clear >>"%vbfile%" echo objWS.RegDelete strKey ^& I ^& "\" >>"%vbfile%" echo If Err.Number ^<^> 0 Then >>"%vbfile%" echo objWS.RegDelete strKey ^& I ^& "\" ^& "Debugger" >>"%vbfile%" echo End If >>"%vbfile%" echo End If >>"%vbfile%" echo Err.Clear >>"%vbfile%" echo On Error Goto 0 >>"%vbfile%" echo Next >>"%vbfile%" echo Set objWS = Nothing cscript.exe //nologo "%vbfile%" echo: echo: echo *** エラー画面が出なければ再設定は成功しているはずです *** echo: echo *** ! 但し、Windows 2000 では、 *** echo *** ! Windows\Regedt32.exe をリネームコピーして実行、 *** echo *** ! 該当不正キーへのアクセス許可が必要かもしれません *** echo: echo *** ! *** または、Regperm.exe をここにコピーして *** echo *** ! *** 再度試してクダサイ *** echo: echo *** 何かキーを押すとメニューに戻ります *** echo: pause >nul GOTO MENU REM ##################################### REM ### Regedit エラー REM ##################################### :ERRO_REG cls echo: echo: echo ! エラー出ますた... ! echo: echo ! * レジストリ エディタの起動について ! echo ! * 不正な設定があるのかもしれません ! echo ! * 管理者が禁止設定してるのかもしれません ! echo: echo ! * 修正してもいいのなら ! echo ! * [Regedit を有効に再設定] を実行してみてクダサイ ! echo: echo *** 何かキーを押すとメニューに戻ります *** echo: pause >nul cls echo: echo * 一時ファイルを削除します..... echo: rd /s /q "%temp_dir%" GOTO PRE_MENU REM ##################################### REM ### エラー REM ##################################### :ERROR echo: echo ! エラー出ますた... ! echo: echo *** 何かキーを押すと閉じます *** echo: pause >nul cls echo: echo * 一時ファイルを削除します..... echo: rd /s /q "%temp_dir%" GOTO END REM ##################################### REM ### UAC REM ##################################### :UAC echo: echo: echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: echo !「管理者として実行」してくださいマセ ! echo: echo *** 何かキーを押すと閉じます *** echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: pause >nul GOTO :EOF REM ##################################### REM ### done ! REM ##################################### :DONE cls echo: echo: echo: echo ============================================================ echo: echo done ! echo: echo ============================================================ echo: echo: echo * Enter で ログを表示します。 echo: echo: pause >nul start "" "%log%"