Skip to content

Instantly share code, notes, and snippets.

@cointoss1973
Last active March 17, 2017 02:06
Show Gist options
  • Save cointoss1973/5043852 to your computer and use it in GitHub Desktop.
Save cointoss1973/5043852 to your computer and use it in GitHub Desktop.
レジストリを自動的に参照して.NET Frameworkのバージョンを検出・表示するバッチ・ファイル http://www.atmarkit.co.jp/ait/articles/1210/26/news086.html
@echo off
REM ------------------------------------------------------------------------------
REM .NET Frameworkバージョン自動検出用バッチ・ファイル(2012年10月26日版)
REM
REM Windows TIPS: .NET Frameworkのバージョンを確認する方法
REM http://www.atmarkit.co.jp/ait/articles/1210/26/news086.html
REM Copyright (C) 2000-2012 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"
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/4.5 の検出
:Detect4
REM ----- ランタイムのインストールの確認
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.5)
reg query "%~2\Full" /v "Version" 2>nul | find /I "Version" 2>nul | find /I "4.5." 1>nul 2>nul
if not errorlevel 1 (
echo .NET Framework 4.5 がインストール済みです
REM ----- 日本語 Language Packのインストールの確認(4.5)
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.5)
reg query "%~2\Full\1041" /v "Version" 2>nul | find /I "Version" 2>nul | find /I "4.5." 1>nul 2>nul
if not errorlevel 1 (
echo  日本語Language Packがインストール済みです
) else (
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  .NET Framework 4用の日本語Language Packがインストールされています
) else (
echo  バージョン不明の日本語Language Packがインストールされています
)
)
) else (
echo  日本語Language Packはインストールされていません
)
) else (
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 (
echo 何らかのバージョンの.NET Framework 4.x(フル版) がインストール済みです
)
)
) 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はインストールされていません
)
) else (
echo 何らかのバージョンの.NET Framework 4.x(クライアント・プロファイル版) がインストール済みです
)
)
)
exit /b
REM -----
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment