プログラムの追加と削除でみることが出来るインストール済みプログラム一覧。あれをプログラムから閲覧できると便利だと思いました。自動インストールとか、パッチレベルを調査するときに使えそう。
そこで自分レポジトリのコード定型集をあさってみました。
インストール済み一覧.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年近く前なので出典が解らない。。。