プログラムの追加と削除でみることが出来るインストール済みプログラム一覧。あれをプログラムから閲覧できると便利だと思いました。自動インストールとか、パッチレベルを調査するときに使えそう。
そこで自分レポジトリのコード定型集をあさってみました。
インストール済み一覧.js
function RegEnum(nRegRoot, sRegPath){
var oScriptControl = new ActiveXObject("ScriptControl");
var sRegProv = "winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default:StdRegProv";
var sScriptText = "";
sScriptText += "Function RegEnum2(sRegProv, nRegRoot, sRegPath)\n";
sScriptText += " Call GetObject(sRegProv).EnumKey(nRegRoot, sRegPath, RegEnum2)\n";
sScriptText += "End Function\n";
oScriptControl.Language = "VBScript";
oScriptControl.AddCode(sScriptText);
var sResult = oScriptControl.Run("RegEnum2", sRegProv, nRegRoot, sRegPath);
if(sResult == null){
return null;
}
return new VBArray(sResult).toArray();
}
function read_disp_name(subkey_name){
WshShell = new ActiveXObject( "WScript.Shell" );
return WshShell.RegRead("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"+subkey_name+"\\DisplayName");
}
//例
var HKEY_CURRENT_USER = 0x80000001;
var HKEY_LOCAL_MACHINE = 0x80000002;
var sRegPath = "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\";
var aRegKey = RegEnum(HKEY_LOCAL_MACHINE, sRegPath)
if(aRegKey == null){
WScript.Echo("error");
WScript.Quit();
}
var Names= "";
for(value in aRegKey){
try{
Names += read_disp_name(aRegKey[value]) + "\r\n";
}catch(ex){
Names += aRegKey[value] + "\r\n";
}
}
WScript.Echo(Names);
どこかのサイトのスクリプトをコピーしまものらしい。1年近く前なので出典が解らない。。。