inno setup で 正規表現使ってみた (VBScript.RegExp使って)
利用例を適当に晒しておくので何かの参考までに。…んまぁ元々ンなに難しいことではないけども(ぉ ^^;
実装例
HKEY_USERS の直下にある ログインユーザーの SID を列挙します。 ("S-1-5-21-0011223344-5566778899-0011223344-1000" の形式にガッチリ合うモノを列挙)
VBScript.RegExp の仕様は MSDN 見ましょう。もしくはググれ!
function GetUserSIDs() : array of String; var names : TArrayOfString; name : String; i : Integer; size : Longint; ret : array of String; { 戻り値扱う配列 } reti : Integer; { 戻り値扱う配列の添え字 } regex : Variant; begin reti := 0; regex := CreateOleObject('VBScript.RegExp'); { RegExp の プロパティをセット } IDispatchInvoke(regex, True, 'Pattern', ['^S-1-5-21-\d+-\d+-\d+-\d+$']); if RegGetSubkeyNames(HKEY_USERS, '', names) then begin size := GetArrayLength(names); SetArrayLength(ret, size); { とりあえず最大必要になる要素数を確保 // 最後に調整 } for i := 0 to size - 1 do begin name := names[i]; if IDispatchInvoke(regex, False, 'Test', [name]) then { メソッド実行。 Test() は boolが返る } begin ret[reti] := name; reti := reti + 1; Log(Format('User SID = %s', [name])); end; end; end; SetArrayLength(ret, reti); { 実際に必要になった要素数に再調整 } Result := ret; end;