質問

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

次に、実際に削除しようとせずにキーを削除することを許可されているかどうかを判断する必要があります(たとえば、非破壊的なチェックを実行します)。ドキュメントを見て、必要であることがわかりました StdRegProv.CheckAccess() 方法。問題はそれです CheckAccess 結果を返します out 議論と私はvbscriptのものを見つけることができませんでした ByRef JScriptに相当します。

インターネットのどこかで使用していることがわかりました SWbemServices.ExecMethod どういうわけか役に立ちますが、どうすればそれをどのように使用できるかわかりませんでした。

参照によって渡された引数を備えたJScriptのパフォーマンス関数呼び出しでコードサンプルを提供してもらえますか?

役に立ちましたか?

解決

ええ、それを機能させました。

それを必要とする人のために、 CheckAccess jscriptでの呼び出しは次のように見えます:

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);
};
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top