【问题标题】:WMI methods using ManagementObject.InvokeMethod()使用 ManagementObject.InvokeMethod() 的 WMI 方法
【发布时间】:2013-10-02 17:51:33
【问题描述】:

我在尝试使用 .NET ManagementObject 对象调用 SoftwareLicensingProduct.GetTokenActivationGrants WMI 方法时遇到问题。 GetTokenActivationGrants 具有以下签名:

uint32 GetTokenActivationGrants(
  [out]  string Grants[]
);

我正在使用以下 C# 代码:

class Program
{
    private const string GRANTS_METHOD = "GetTokenActivationGrants";

    static void Main(string[] args)
    {

        ManagementObjectSearcher productSearch = new ManagementObjectSearcher("SELECT ID, Name, ApplicationId, PartialProductKey, Description, LicenseIsAddon " +
            "FROM SoftwareLicensingProduct WHERE ApplicationId = '55c92734-d682-4d71-983e-d6ec3f16059f' AND PartialProductKey <> NULL " +
            "AND LicenseIsAddon = FALSE");

        foreach (ManagementObject product in productSearch.Get())
        {
            ManagementBaseObject inParams = product.GetMethodParameters(GRANTS_METHOD);
            ManagementBaseObject outParams = product.InvokeMethod(GRANTS_METHOD, inParams, null);
        }

    }
}

这失败并出现 System.Runtime.InteropServices.COMException,我认为这是因为 GetMethodParameters 返回 null。有谁知道如何正确调用像这样具有引用参数的方法?

【问题讨论】:

  • COMException 类有一个名为 ErrorCode 的属性。你得到什么错误代码?
  • 错误码是-1073417466。
  • 此错误的含义如下:软件许可服务报告此软件版本不支持基于令牌的激活。
  • 感谢@Hans,我自己就能够解决这个问题。您是否在任何地方找到错误代码列表?我只能在%SystemRoot%\System32\slmgr\0409\slmgr.ini找到它。
  • 这里是错误代码的链接:gallery.technet.microsoft.com/office/…

标签: c# wmi


【解决方案1】:

正如@Hans 评论的那样,这是一个预期的错误。问题是在 MSDN 库中的任何地方都没有记录任何预期或可能的错误。稍加挖掘,您就可以在%SystemRoot%\System32\slmgr\0409\slmgr.inihttp://gallery.technet.microsoft.com/office/68b80aba-130d-4ad4-aa45-832b1ee49602 中找到它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多