Last active
March 17, 2017 02:06
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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