0

.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);
        }

    }
}

これは、 GetMethodParametersが null を返すために発生していると思われるSystem.Runtime.InteropServices.COMExceptionで失敗します。参照された引数を持つこのようなメソッドを適切に呼び出す方法を知っている人はいますか?

4

1 に答える 1

1

@Hans がコメントしたように、これは予想されるエラーです。問題は、予想されるエラーまたは発生する可能性のあるエラーが、MSDN ライブラリのどこにも記載されていないことです。%SystemRoot%\System32\slmgr\0409\slmgr.ini少し掘り下げると、またはhttp://gallery.technet.microsoft.com/office/68b80aba-130d-4ad4-aa45-832b1ee49602でそれらを見つけることができます。

于 2013-10-03T20:03:22.733 に答える