Вызов функций с аргументами `out`, передача аргументов по ссылке в JScript - PullRequest
2 голосов
/ 29 ноября 2010

Я использую следующий код в JScript (WSH) для подключения к локальному реестру с помощью WMI: var registry = GetObject('winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default:StdRegProv');, и это работает.

Затем я должен определить, разрешено ли мне удалять ключ безпытаясь удалить его (например, выполнить неразрушающий контроль).Я просмотрел документы и обнаружил, что мне нужен метод StdRegProv.CheckAccess().Проблема в том, что CheckAccess возвращает результат в качестве аргумента out, и я не могу найти ByRef эквивалент VBScript в JScript.

Где-то в Интернете я обнаружил, что использование SWbemServices.ExecMethod поможет как-то, ноЯ еще не понял, как я могу это использовать.

Может ли кто-нибудь предоставить мне пример кода в JScript, выполняющий вызов функции с аргументом, переданным по ссылке?

1 Ответ

3 голосов
/ 29 ноября 2010

Хех, все заработало.

Для тех, кому это нужно, вызов 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);
};
...