4
C#からMsiEnumRelatedProductsを呼び出しても問題はありません。私はp/invokeの定義にいくつかのバリエーションを試しましたが、運はありません(outとref)。私は問題が最後のパラメータだと思います。これは、長さ39文字の文字列を指すLPTSTRです。C#からのMsiEnumRelatedProductsの呼び出しがクラッシュする
は、ここでのPInvokeだとコール:渡されたのUpgradeCodeは、少なくとも1インストールされた製品を持っていたときにクラッシュが発生しただけ
public static string EnumRelatedProducts(string UpgradeCode, int Index)
{
string ProductCode;
UInt32 rc = MsiEnumRelatedProducts(UpgradeCode, 0, Index, out ProductCode);
Console.WriteLine("Returned");
if (rc != 0)
{
return string.Empty;
}
return ProductCode;
}
[DllImport("msi.dll", CharSet = CharSet.Auto)]
private static extern UInt32 MsiEnumRelatedProducts(string UpgradeCode, int reserved, int Index, out string ProductCode);
注こと。
まさに正しいです!ありがとうございました! – user53794
素晴らしい!ありがとうございました。 – Ries