それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Windowsのインストール済みプログラム一覧

プログラムの追加と削除でみることが出来るインストール済みプログラム一覧。あれをプログラムから閲覧できると便利だと思いました。自動インストールとか、パッチレベルを調査するときに使えそう。

そこで自分レポジトリのコード定型集をあさってみました。

インストール済み一覧.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年近く前なので出典が解らない。。。