使用`out`参数调用函数,在JScript中通过引用传递参数

时间:2010-11-29 20:17:03

标签: javascript vbscript wmi jscript

我正在使用JScript(WSH)中的以下代码使用WMI连接到本地注册表:var registry = GetObject('winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default:StdRegProv');并且可以正常工作。

然后我必须确定是否允许我删除密钥而不是真正尝试删除它(例如执行非破坏性检查)。我查看了文档,发现我需要StdRegProv.CheckAccess()方法。问题是CheckAccess将结果作为out参数返回,我在JScript中找不到VBScript的ByRef等价物。

在互联网的某个地方我发现使用SWbemServices.ExecMethod会有所帮助,但我还没弄明白我该如何使用它。

有人可以在JScript中通过引用传递的参数向我提供代码示例吗?

1 个答案:

答案 0 :(得分:3)

嘿,让它运转起来。

对于任何需要它的人来说,JScript中的CheckAccess调用看起来像这样:

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);
};