2010-11-29 6 views
2

Ich verwende folgenden Code in JScript (WSH), um eine Verbindung zur lokalen Registrierung mit WMI: var registry = GetObject('winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default:StdRegProv'); und das funktioniert.Aufrufen von Funktionen mit out-Argumente, übergeben Argumente durch Verweis in JScript

Dann muss ich feststellen, ob ich Schlüssel löschen darf, ohne wirklich zu versuchen, es zu löschen (z. B. eine zerstörungsfreie Prüfung durchführen). Ich schaute über Docs und fand, dass ich StdRegProv.CheckAccess() Methode brauche. Problem ist, dass CheckAccess Ergebnis als out Argument zurückgibt, und ich VBScript ByRef Äquivalent in JScript nicht finden konnte.

Irgendwo im Internet habe ich festgestellt, dass die Verwendung von SWbemServices.ExecMethod irgendwie helfen würde, aber ich hatte nicht herausgefunden, wie kann ich das noch nutzen.

Kann mir jemand Code-Beispiel in JScript zur Verfügung stellen Funktionsaufruf mit Argument durch Referenz übergeben?

Antwort

2

Heh, hat es funktioniert.

Für alle, die es brauchen wird, sieht CheckAccess Invokation in JScript etwas wie folgt aus:

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