2010-11-29 128 views
2

我在JScript(WSH)中使用以下代碼連接到使用WMI的本地註冊表:var registry = GetObject('winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default:StdRegProv');並且工作正常。用`out`參數調用函數,在JScript中通過引用傳遞參數

然後,我必須確定是否允許刪除密鑰而不真正刪除密鑰(例如執行非破壞性檢查)。我查看了文檔,發現我需要StdRegProv.CheckAccess()方法。問題是CheckAccess返回結果爲out參數,我在JScript中找不到VBScript的ByRef等效項。

在互聯網的某個地方,我發現使用SWbemServices.ExecMethod會有所幫助,但我還沒弄清楚如何使用它。

任何人都可以向我提供JScript中的代碼示例執行函數調用參數傳遞參數嗎?

回答

2

呃,搞定了。

對於任何人誰需要它,CheckAccess invokation 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); 
};