2

WMI を使用してローカル レジストリに接続するために、JScript (WSH) で次のコードを使用しvar registry = GetObject('winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default:StdRegProv');ています。

次に、実際にキーを削除しようとせずにキーを削除できるかどうかを判断する必要があります (たとえば、非破壊チェックを実行します)。ドキュメントを調べたところ、方法が必要であることがわかりましたStdRegProv.CheckAccess()。問題は、結果を引数CheckAccessとして返すことであり、VBScriptに相当するものを JScript で見つけることができませんでした。outByRef

インターネットのどこかで、 を使用SWbemServices.ExecMethodすると何らかの形で役立つことがわかりましたが、それをどのように使用できるかはまだわかりませんでした。

参照渡しの引数を使用して関数呼び出しを実行する JScript のコード サンプルを提供してもらえますか?

4

1 に答える 1

3

Heh, got it working.

For anyone who will need it, CheckAccess invokation in JScript looks something like this:

function CheckAccess(defKey, subkeyName, required) {
    var providerName = "StdRegProv";
    var funcName = "CheckAccess";

    // connect to WMI
    var services = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default");

    // get provider
    var registry = services.Get(providerName);

    var in_params = registry.Methods_(funcName).InParameters.SpawnInstance_();
    in_params.hDefKey = defKey;
    in_params.sSubKeyName = subkeyName;
    in_params.uRequired = required;

    var outParams = services.ExecMethod(providerName, funcName, inParams);

    return Boolean(outParams.bGranted);
};
于 2010-11-29T20:40:05.420 に答える