StdRegProv .CheckAccess method in JScript - error: Object expected

0

This script is getting Microsoft JScript runtime error: Object expected on If (out_params.bGranted) line. It seems like this is related to a syntax error, but I can't find it. This code, in its current form, was basically copied from Invoking functions with `out` arguments, passing arguments by reference in 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();
wsh
jscript
asked on Stack Overflow Jul 29, 2011 by Eric H • edited May 23, 2017 by Community

1 Answer

0

In JScript, keywords (and identifiers) are case-sensitive, so you cannot use If instead of if, Elseinstead of else, and so on.

In your example the script engine interprets If (out_params.bGranted) as a function call, which results in a runtime error since you obviously did not defined an If function.

answered on Stack Overflow Jul 29, 2011 by Luc125

User contributions licensed under CC BY-SA 3.0