.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で失敗します。参照された引数を持つこのようなメソッドを適切に呼び出す方法を知っている人はいますか?