2013-09-26 67 views
0

我在調用SoftwareLicensingProduct.GetTokenActivationGrants WMI方法時使用.NET ManagementObject對象時出現問題。 GetTokenActivationGrants具有以下特徵:使用ManagementObject.InvokeMethod的WMI方法()

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。有誰知道如何正確地調用像這樣的引用參數的方法?

+1

COMException類有一個名爲ErrorCode的屬性。你得到什麼ErrorCode? – Hans

+0

ErrorCode是-1073417466。 –

+1

此錯誤的含義如下:軟件授權服務報告此軟件版本不支持基於令牌的激活。 – Hans

回答