Skip to content

Instantly share code, notes, and snippets.

@noqisofon
Created March 29, 2011 04:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save noqisofon/891803 to your computer and use it in GitHub Desktop.
Save noqisofon/891803 to your computer and use it in GitHub Desktop.
.NET Framework のバージョンをチェックする。
#!c:/bin/ruby/bin/ruby
# encoding: shift_jis;
# \file check-dotnet-framework.rb
# (via: http://www.atmarkit.co.jp/fwin2k/win2ktips/246checkvdnfw/checkvdnfw.html)
# .NET Framework のバージョンをチェックする。
# v4.0 まで。
# (via: http://d.hatena.ne.jp/mzp/20070913/platform)
# RUBY_PLATFORM を調べ、ruby が走っているプラットフォームが Windows かどうか調べます。
unless RUBY_PLATFORM =~ /mswin(?!ce)|mingw|cygwin|bccwin/ then
$stderr.puts "お使いの OS は Windows ではありませんでした。"
exit
end
require 'win32/registry'
DOT_NET_FRAMEWORK1_0 = 'SOFTWARE\Microsoft\NET Framework Setup\Full\v1.0.3705\1041\Microsoft .NET Framework Full v1.0.3705 (1041)'
DOT_NET_FRAMEWORK1_0_PATCH_LEVEL = 'SOFTWARE\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd}'
DOT_NET_FRAMEWORK = 'SOFTWARE\Microsoft\NET Framework Setup\NDP'
DOT_NET_FRAMEWORK1_1 = DOT_NET_FRAMEWORK + '\v1.1.4322'
DOT_NET_FRAMEWORK2_0 = DOT_NET_FRAMEWORK + '\v2.0.50727'
DOT_NET_FRAMEWORK3_0 = DOT_NET_FRAMEWORK + '\v3.0'
DOT_NET_FRAMEWORK3_5 = DOT_NET_FRAMEWORK + '\v3.5'
DOT_NET_FRAMEWORK4_0 = 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client'
begin
Win32::Registry::HKEY_LOCAL_MACHINE.open( DOT_NET_FRAMEWORK1_0 ) do |section|
installed = section['Install'].to_i
puts ".NET Framework 1.0" if installed == 1
end
Win32::Registry::HKEY_LOCAL_MACHINE.open( DOT_NET_FRAMEWORK1_0_PATCH_LEVEL ) do |section|
value = section['Version'].split( /,/ ).pop.to_i
puts ".NET Framework 1.0 Service Pack #{value}" if value != 0
end
rescue
# nothing
end
framework_versions = [ ".NET Framework 1.1", ".NET Framework 2.0", ".NET Framework 3.0", ".NET Framework 3.5" ]
[ DOT_NET_FRAMEWORK1_1, DOT_NET_FRAMEWORK2_0, DOT_NET_FRAMEWORK3_0, DOT_NET_FRAMEWORK3_5].each_with_index do |path, i|
framework_version = framework_versions[i]
begin
Win32::Registry::HKEY_LOCAL_MACHINE.open( path ) do |section|
installed = section['Install'].to_i
service_pack = section['SP'].to_i
if installed == 1 then
puts framework_version
puts "#{framework_version} Service Pack #{service_pack}" if service_pack > 0
end
end
Win32::Registry::HKEY_LOCAL_MACHINE.open( path + '\1041' ) do |section|
installed = section['Install'].to_i
service_pack = section['SP'].to_i
if service_pack == 0 then
puts "#{framework_version} 日本語 Language Pack"
else
puts "#{framework_version} 日本語 Language Pack #{service_pack}"
end
end
rescue
# nothing
end
end
begin
Win32::Registry::HKEY_LOCAL_MACHINE.open( DOT_NET_FRAMEWORK4_0 ) do |section|
installed = section['Install'].to_i
puts ".NET Framework 4.0" if installed == 1
end
rescue
# nothing
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment