@echo off REM ------------------------------------------------------------------------------ REM .NET Frameworkバージョン自動検出用バッチ・ファイル(2015年10月9日版) REM REM Tech TIPS: .NET Frameworkのバージョンを確認する方法 REM http://www.atmarkit.co.jp/ait/articles/1210/26/news086.html REM Copyright (C) 2000-2015 Digital Advantage Corp. REM ------------------------------------------------------------------------------ setlocal REM ----- 引数(リモート・コンピュータ名)の確認 if %1. == . ( set RemoteName= echo ----- ローカル・コンピュータ(%COMPUTERNAME%) ----- ) else ( set RemoteName=%1\ echo ----- %1 ----- ) REM ----- レジストリに参照できるか確認 reg query %RemoteName%HKLM\SOFTWARE\Microsoft 1>nul if errorlevel 1 ( echo %0: レジストリを参照できません。エラーが発生しました。 endlocal exit /b ) REM ----- レジストリ・エントリの指定 set RegKey11=%RemoteName%HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP REM ----- 各バージョンの確認 call :Detect10 call :Detect11_35 ".NET Framework 1.1" "%RegKey11%\v1.1.4322" call :Detect11_35 ".NET Framework 2.0" "%RegKey11%\v2.0.50727" call :Detect11_35 ".NET Framework 3.0" "%RegKey11%\v3.0" call :Detect11_35 ".NET Framework 3.5" "%RegKey11%\v3.5" call :Detect4 ".NET Framework 4" "%RegKey11%\v4" call :Detect45 ".NET Framework 4.5" "%RegKey11%\v4\Full" call :Detect46 ".NET Framework 4.6" "%RegKey11%\v4\Full" REM ----- 終了処理 endlocal exit /b REM -------------------------------------- REM ----- .NET Framework 1.0の検出 :Detect10 set RegKey10_Inst=%RemoteName%HKLM\SOFTWARE\Microsoft\NET Framework Setup\Full\v1.0.3705\1041\Microsoft .NET Framework Full v1.0.3705 (1041) set RegKey10_SP=%RemoteName%HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components REM ----- インストールの確認 reg query "%RegKey10_Inst%" /v "Install" 2>nul | find /I "Install" 2>nul | find /I "0x1" 1>nul 2>nul if errorlevel 1 goto NoExist10 REM ----- Service Packレベルの確認 reg query "%RegKey10_SP%\{78705f0d-e8db-4b2d-8193-982bdda15ecd}" /v "Version" 2>nul | find /I "Version" 1> temp-RegOut.log 2>nul reg query "%RegKey10_SP%\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}" /v "Version" 2>nul | find /I "Version" 1>> temp-RegOut.log 2>nul REM ----- 初期版の確認 find /I "1,0,3705,0" temp-RegOut.log 1>nul 2>nul && echo .NET Framework 1.0 初期版がインストール済みです REM ----- SP1/SP2/SP3の確認 for %%i in (1 2 3) do (find /I "1,0,3705,%%i" temp-RegOut.log 1>nul 2>nul && echo .NET Framework 1.0 Service Pack %%i がインストール済みです) :NoExist10 if exist temp-RegOut.log del temp-RegOut.log exit /b REM ----- REM -------------------------------------- REM ----- .NET Framework 1.1/2.0/3.0/3.5 の検出 :Detect11_35 REM ----- インストールの確認 reg query "%~2" /v "Install" 2>nul | find /I "Install" 2>nul | find /I "0x1" 1>nul 2>nul if errorlevel 1 goto NoExist11 reg query "%~2" /v "SP" 2>nul | find /I "SP" 1> temp-RegOut.log 2>nul if errorlevel 1 goto NoExist11 REM ----- 初期版の確認 find /I "0x0" temp-RegOut.log 1>nul 2>nul && echo %~1 初期版 がインストール済みです REM ----- SP1/SP2/SP3の確認 for %%i in (1 2 3) do (find /I "0x%%i" temp-RegOut.log 1>nul 2>nul && echo %~1 Service Pack %%i がインストール済みです) REM ----- 日本語 Language Packの確認 set LangPath= reg query "%~2\Setup\1041" /v "Install" 2>nul | find /I "Install" 2>nul | find /I "0x1" 1>nul 2>nul && set LangPath=%~2\Setup\1041 reg query "%~2\1041" /v "Install" 2>nul | find /I "Install" 2>nul | find /I "0x1" 1>nul 2>nul && set LangPath=%~2\1041 if "%LangPath%" == "" ( echo  日本語Language Packはインストールされていません ) else ( reg query "%LangPath%" /v "SP" 2>nul | find /I "SP" 1> temp-RegOut.log 2>nul find /I "0x0" temp-RegOut.log 1>nul 2>nul && echo  日本語Language Pack(初期版)がインストール済みです for %%i in (1 2 3) do (find /I "0x%%i" temp-RegOut.log 1>nul 2>nul && echo  日本語Language Pack(Service Pack %%i)がインストール済みです) ) :NoExist11 if exist temp-RegOut.log del temp-RegOut.log exit /b REM ----- REM -------------------------------------- REM ----- .NET Framework 4 の検出 :Detect4 REM ----- ランタイムのインストールの確認(4.x) reg query "%~2\Full" /v "Install" 2>nul | find /I "Install" 2>nul | find /I "0x1" 1>nul 2>nul if not errorlevel 1 ( REM ----- ランタイムのバージョンの確認(4 フル) reg query "%~2\Full" /v "Version" 2>nul | find /I "Version" 2>nul | find /I "4.0." 1>nul 2>nul if not errorlevel 1 ( echo .NET Framework 4(フル版) がインストール済みです REM ----- 日本語 Language Packのインストールの確認(4 フル) reg query "%~2\Full\1041" /v "Install" 2>nul | find /I "Install" 2>nul | find /I "0x1" 1>nul 2>nul if not errorlevel 1 ( REM ----- 日本語 Language Packのバージョンの確認(4 フル) reg query "%~2\Full\1041" /v "Version" 2>nul | find /I "Version" 2>nul | find /I "4.0." 1>nul 2>nul if not errorlevel 1 ( echo  日本語Language Pack(フル版) がインストール済みです ) else ( echo  バージョン不明の日本語Language Pack(フル版)がインストールされています ) ) else ( echo  日本語Language Packはインストールされていません ) ) ) else ( REM ----- ランタイムのインストールの確認(4 クライアントプロファイル) reg query "%~2\Client" /v "Install" 2>nul | find /I "Install" 2>nul | find /I "0x1" 1>nul 2>nul if not errorlevel 1 ( REM ----- ランタイムのバージョンの確認(4 クライアントプロファイル) reg query "%~2\Client" /v "Version" 2>nul | find /I "Version" 2>nul | find /I "4.0." 1>nul 2>nul if not errorlevel 1 ( echo .NET Framework 4(クライアントプロファイル版) がインストール済みです REM ----- 日本語 Language Packのインストールの確認(4 クライアントプロファイル) reg query "%~2\Client\1041" /v "Install" 2>nul | find /I "Install" 2>nul | find /I "0x1" 1>nul 2>nul if not errorlevel 1 ( REM ----- 日本語 Language Packのバージョンの確認(4 クライアントプロファイル) reg query "%~2\Client\1041" /v "Version" 2>nul | find /I "Version" 2>nul | find /I "4.0." 1>nul 2>nul if not errorlevel 1 ( echo  日本語Language Pack(クライアントプロファイル版) がインストール済みです ) else ( echo  バージョン不明の日本語Language Pack(クライアントプロファイル版)がインストールされています ) ) else ( echo  日本語Language Packはインストールされていません ) ) ) ) exit /b REM ----- REM -------------------------------------- REM ----- .NET Framework 4.5.x の検出 :Detect45 REM ----- ランタイムのインストールの確認(4.x) reg query "%~2" /v "Install" 2>nul | find /I "Install" 2>nul | find /I "0x1" 1>nul 2>nul if not errorlevel 1 ( REM ----- ランタイムのバージョンの確認(4.5.x) reg query "%~2" /v "Version" 2>nul | find /I "Version" 2>nul | find /I "4.5." 1>nul 2>nul if not errorlevel 1 ( reg query "%~2" /v "Release" 2>nul | find /I "Release" 1> temp-RegOut1.log 2>nul reg query "%~2\1041" /v "Install" 2>nul | find /I "Install" 1> temp-RegOut2.log 2>nul reg query "%~2\1041" /v "Version" 2>nul | find /I "Version" 1> temp-RegOut3.log 2>nul reg query "%~2\1041" /v "Release" 2>nul | find /I "Release" 1> temp-RegOut4.log 2>nul REM ----- ランタイムのマイナーバージョンの確認(4.5.0) find /I "0x5c615" temp-RegOut1.log 1>nul 2>nul if not errorlevel 1 ( echo %~1 がインストール済みです REM ----- 日本語 Language Packのインストールの確認(4.x) find /I "0x1" temp-RegOut2.log 1>nul 2>nul if not errorlevel 1 ( REM ----- 日本語 Language Packのバージョンの確認(4.5.x) find /I "4.5." temp-RegOut3.log 1>nul 2>nul if not errorlevel 1 ( REM ----- 日本語 Language Packのバージョンの確認(4.5.0) find /I "0x5c615" temp-RegOut4.log 1>nul 2>nul if not errorlevel 1 ( echo  日本語Language Packがインストール済みです ) else ( echo  バージョン不明の日本語Language Packがインストールされています ) ) else ( echo  バージョン不明の日本語Language Packがインストールされています ) ) else ( echo  日本語Language Packはインストールされていません ) ) else ( REM ----- ランタイムのマイナーバージョンの確認(4.5.1 (Win 8.1/Server 2012 R2)) find /I "0x5c733" temp-RegOut1.log 1>nul 2>nul if not errorlevel 1 ( echo %~1.1 がインストール済みです REM ----- 日本語 Language Packのインストールの確認(4.x) find /I "0x1" temp-RegOut2.log 1>nul 2>nul if not errorlevel 1 ( REM ----- 日本語 Language Packのバージョンの確認(4.5.x) find /I "4.5." temp-RegOut3.log 1>nul 2>nul if not errorlevel 1 ( REM ----- 日本語 Language Packのバージョンの確認(4.5.1) find /I "0x5c733" temp-RegOut4.log 1>nul 2>nul if not errorlevel 1 ( echo  日本語Language Packがインストール済みです ) else ( echo  バージョン不明の日本語Language Packがインストールされています ) ) else ( echo  バージョン不明の日本語Language Packがインストールされています ) ) else ( echo  日本語Language Packはインストールされていません ) ) else ( REM ----- ランタイムのマイナーバージョンの確認(4.5.1 (Win Vista/7/8)) find /I "0x5c786" temp-RegOut1.log 1>nul 2>nul if not errorlevel 1 ( echo %~1.1 がインストール済みです REM ----- 日本語 Language Packのインストールの確認(4.x) find /I "0x1" temp-RegOut2.log 1>nul 2>nul if not errorlevel 1 ( REM ----- 日本語 Language Packのバージョンの確認(4.5.x) find /I "4.5." temp-RegOut3.log 1>nul 2>nul if not errorlevel 1 ( REM ----- 日本語 Language Packのバージョンの確認(4.5.1) find /I "0x5c786" temp-RegOut4.log 1>nul 2>nul if not errorlevel 1 ( echo  日本語Language Packがインストール済みです ) else ( echo  バージョン不明の日本語Language Packがインストールされています ) ) else ( echo  バージョン不明の日本語Language Packがインストールされています ) ) else ( echo  日本語Language Packはインストールされていません ) ) else ( REM ----- ランタイムのマイナーバージョンの確認(4.5.2) find /I "0x5cbf5" temp-RegOut1.log 1>nul 2>nul if not errorlevel 1 ( echo %~1.2 がインストール済みです REM ----- 日本語 Language Packのインストールの確認(4.x) find /I "0x1" temp-RegOut2.log 1>nul 2>nul if not errorlevel 1 ( REM ----- 日本語 Language Packのバージョンの確認(4.5.x) find /I "4.5." temp-RegOut3.log 1>nul 2>nul if not errorlevel 1 ( REM ----- 日本語 Language Packのバージョンの確認(4.5.2) find /I "0x5cbf5" temp-RegOut4.log 1>nul 2>nul if not errorlevel 1 ( echo  日本語Language Packがインストール済みです ) else ( echo  バージョン不明の日本語Language Packがインストールされています ) ) else ( echo  バージョン不明の日本語Language Packがインストールされています ) ) else ( echo  日本語Language Packはインストールされていません ) ) else ( REM ----- .NET Framework 4.5.x がインストール済み echo %~1.x がインストール済みです REM ----- 日本語 Language Packのインストールの確認(4.x) find /I "0x1" temp-RegOut2.log 1>nul 2>nul if not errorlevel 1 ( REM ----- 日本語 Language Packのバージョンの確認(4.5.x) find /I "4.5." temp-RegOut3.log 1>nul 2>nul if not errorlevel 1 ( echo  日本語Language Packがインストール済みです ) else ( echo  バージョン不明の日本語Language Packがインストールされています ) ) else ( echo  日本語Language Packはインストールされていません ) ) ) ) ) ) ) if exist temp-RegOut*.log del temp-RegOut*.log exit /b REM ----- REM -------------------------------------- REM ----- .NET Framework 4.6 の検出 :Detect46 REM ----- ランタイムのインストールの確認(4.x) reg query "%~2" /v "Install" 2>nul | find /I "Install" 2>nul | find /I "0x1" 1>nul 2>nul if not errorlevel 1 ( REM ----- ランタイムのバージョンの確認(4.6) reg query "%~2" /v "Version" 2>nul | find /I "Version" 2>nul | find /I "4.6." 1>nul 2>nul if not errorlevel 1 ( echo .NET Framework 4.6 がインストール済みです REM ----- 日本語 Language Packのインストールの確認(4.6) reg query "%~2\1041" /v "Install" 2>nul | find /I "Install" 2>nul | find /I "0x1" 1>nul 2>nul if not errorlevel 1 ( REM ----- 日本語 Language Packのバージョンの確認(4.6) reg query "%~2\1041" /v "Version" 2>nul | find /I "Version" 2>nul | find /I "4.6." 1>nul 2>nul if not errorlevel 1 ( echo  日本語Language Packがインストール済みです ) else ( echo  バージョン不明の日本語Language Packがインストールされています ) ) else ( echo  日本語Language Packはインストールされていません ) ) ) Pause exit /b REM -----