インストールされている .NET Framework のバージョンをチェックするスクリプト を .NET Framework 4.0 に対応してみました。
4.0 は Full と Client Profile の 2 種類があるんですねー。
<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<package>
<job id="Registry">
<?job error="True" debug="True" ?>
<script language="JScript">
<![CDATA[
var checker = function ()
{
var _reader = function ()
{
var _shell = new ActiveXObject ("WScript.Shell");
return { read: function (name) { try { return _shell.RegRead (name); } catch (e) {}; return null; } };
} ();
var _checkKey = function (key)
{
var install = _reader.read (key + "\\Install");
if (install == null || "" + install == "0")
return null;
var servicePack = _reader.read (key + "\\SP");
if (servicePack == null) servicePack = 0;
return servicePack;
};
var _check10 = function ()
{
var install = _reader.read ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\Full\\v1.0.3705\\1041\\Microsoft .NET Framework Full v1.0.3705 (1041)\\Install");
if (install == null || "" + install == "0")
return null;
var version = _reader.read ("HKLM\\SOFTWARE\\Microsoft\\Active Setup\\Installed Components\\{78705f0d-e8db-4b2d-8193-982bdda15ecd}\\Version");
if (version == null)
version = _reader.read ("HKLM\\SOFTWARE\\Microsoft\\Active Setup\\Installed Components\\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}\\Version");
if (version == null)
return 0;
var m = version.match (/^1,0,3705,(\d+)$/);
var servicePack = 0;
if (m != null && m.length > 1)
servicePack = m [1] - 0;
return servicePack;
};
var _formatResult = function (check, label)
{
switch (check)
{
case null: return label + ": not installed.\n";
case 0: return label + ": installed.\n";
default: return label + ": SP" + check + " installed.\n";
}
};
return {
check10: _check10,
check11: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v1.1.4322"); },
check20: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v2.0.50727"); },
check30: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v3.0"); },
check35: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v3.5"); },
check40Client: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Client"); },
check40Full: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full"); },
check11JP: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v1.1.4322\\1041"); },
check20JP: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v2.0.50727\\1041"); },
check30JP: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v3.0\\1041"); },
check35JP: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v3.5\\1041"); },
check40ClientJP: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Client\\1041"); },
check40FullJP: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\1041"); },
show: function ()
{
WScript.echo (_formatResult (this.check10 (), ".NET Framework 1.0")
+ _formatResult (this.check11 (), ".NET Framework 1.1")
+ _formatResult (this.check11JP (), " Japanese Langage Pack")
+ _formatResult (this.check20 (), ".NET Framework 2.0")
+ _formatResult (this.check20JP (), " Japanese Langage Pack")
+ _formatResult (this.check30 (), ".NET Framework 3.0")
+ _formatResult (this.check30JP (), " Japanese Langage Pack")
+ _formatResult (this.check35 (), ".NET Framework 3.5")
+ _formatResult (this.check35JP (), " Japanese Langage Pack")
+ _formatResult (this.check40Client (), ".NET Framework 4.0 Client Profile")
+ _formatResult (this.check40ClientJP (), " Japanese Langage Pack")
+ _formatResult (this.check40Full (), ".NET Framework 4.0 Full")
+ _formatResult (this.check40FullJP (), " Japanese Langage Pack")
);
}
};
} ();
checker.show ();
]]>
</script>
</job>
</package>