Метод StdRegProv .CheckAccess в JScript - ошибка: ожидается объект - PullRequest
0 голосов
/ 29 июля 2011

Этот сценарий получает ошибку времени выполнения Microsoft JScript: ожидается объект в строке If (out_params.bGranted).Кажется, это связано с синтаксической ошибкой, но я не могу ее найти.Этот код в его нынешнем виде был в основном скопирован из Вызывая функции с аргументами `out`, передавая аргументы по ссылке в JScript .

function main()
{
    var provider_name = "StdRegProv";
    var func_name = "CheckAccess";

    var services = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default"); // connect to WMI
    var registry = services.Get(provider_name); // get provider

    var in_params = registry.Methods_(func_name).InParameters.SpawnInstance_();
    in_params.hDefKey = 0x80000001;
    in_params.sSubKeyName = "Software\\Microsoft\\Shared Tools\\Proofing Tools\\1.0\\Override";
    in_params.uRequired = 65536;

    var out_params = services.ExecMethod(provider_name, func_name, in_params);

    If (out_params.bGranted)
    {
        WScript.Echo("Has DELETE Access Rights on HKCU " + strKeyPath);
        registry.DeleteKey (HKCU, strKeyPath);
    }
    Else
    {
        WScript.Echo("No DELETE Access Rights on HKCU " + strKeyPath);
    }
}

main();

1 Ответ

0 голосов
/ 29 июля 2011

В JScript ключевые слова (и идентификаторы) чувствительны к регистру, поэтому вы не можете использовать If вместо if, Else вместо else и т. Д.

В вашемНапример, обработчик сценариев интерпретирует If (out_params.bGranted) как вызов функции, что приводит к ошибке во время выполнения, поскольку вы явно не определили функцию If.

...