以下の条件を調べるスクリプトを教えて下さいませんか?
・「Windows Installer」のインストール有無を確認したい。
・「Windows Installer」のバージョンを確認したい。
・「.NET Framework」のインストール有無を確認したい。
・「.NET Framework」のバージョンを確認したい。
※「レジストリのここを見て判断すればいいんだよ!」という回答でも良いです。(自分でコーディングします)
2つセットでの回答を期待しています。
※あと、VBの得意な方はこちらの回答もお願いできますか。
http://q.hatena.ne.jp/1169471461
http://q.hatena.ne.jp/1169685758
http://q.hatena.ne.jp/1169688676
.NetFrameworkはたぶんこんな感じで探せるような気がする。
もっと良い方法とかあるかな。
あんまりテストもしてないので、そこはご勘弁。
On Error Resume Next
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objRegistry=GetObject("winmgmts:\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\.NETCompactFramework"
objRegistry.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubkeys
For Each objSubkey In arrSubkeys
If Left(objSubkey,4) = "v1.0" Then
WScript.Echo ".Framework v1.0がインストール済"
End If
If Left(objSubkey,4) = "v2.0" Then
WScript.Echo ".Framework v2.0がインストール済"
End If
Next
Installerはどうでしょうね...
WindowsXPは標準が2.0だから、
KB893803が当たってるかどうかで2.0なのか3.1なのかは分かるといえるのかな?
やっつけ仕事で
Set Shell = WScript.CreateObject("WScript.Shell")
RegKey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB893803v2\Fix Description"
Installer = ""
On Error Resume Next
Installer = Shell.RegRead(RegKey)
On Error GoTo 0
if Installer="" then
WScript.Echo "「Windows Installer 3.1」が見つからない"
else
WScript.Echo "「Windows Installer 3.1」が見つかった"
end if
とかじゃ駄目でしょうか。
WMIというのを初めてしりました。
とても勉強になりました。
Frameworkの確認は良さそうですね。
Installerの確認は、
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
のところのサブキーを全てなめて、DisplayNameを1つ1つチェックすることで対応してみました。
ありがとうございました。