【问题标题】:StdRegProv .CheckAccess method in JScript - error: Object expectedJScript 中的 StdRegProv .CheckAccess 方法 - 错误:预期对象
【发布时间】:2011-07-29 14:55:23
【问题描述】:

此脚本出现 Microsoft JScript 运行时错误:If (out_params.bGranted) 行上应有对象。这似乎与语法错误有关,但我找不到它。这段代码,以目前的形式,基本上是从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


    【解决方案1】:

    在 JScript 中,关键字(和标识符)区分大小写,因此不能使用 If 代替 if、Else 代替 else 等等。

    在您的示例中,脚本引擎将 If (out_params.bGranted) 解释为函数调用,这会导致运行时错误,因为您显然没有定义 If 函数。

    【讨论】:

    • 谢谢,这就是问题所在!
    猜你喜欢
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    相关资源
    最近更新 更多