0

我有一些软件可以在加载和调用需要它的 DLL 之前检查是否安装了 Visual C++ 2015 x86 可再发行组件。检查是通过对 的互操作调用完成的MsiQueryProductState,使用以下声明

[DllImport("msi.dll", SetLastError = true)]
public static extern INSTALLSTATE MsiQueryProductState(string product);

电话是

Win32API.MsiQueryProductState("{A2563E55-3BEC-3828-8D67-E5E8B9E8B675}")

它曾经可以工作,现在仍然可以在其他安装了 Windows 10 并安装了原始的、未更新的可再发行组件的机器上工作。

我将 VS2015 与 Update 2 一起用于 C# Windows 桌面开发,其中包括可再发行更新 2。

几周前,我将Windows 7升级到Windows 10,昨天发现支票从returnsINSTALLSTATE_DEFAULT变成了returns INSTALLSTATE_UNKNOWN。我不确定这是否与问题有关,因为我是在升级后才发现的。

谷歌搜索并一无所获后,我搜索了注册表和可再发行安装日志文件,我找到了以下键

{BD9CFD69-EB91-354E-9C98-D439E6091932}
{2e085fd2-a3e4-4b39-8e10-6b8d35f55244}
{B5FC62F5-A367-37A5-9FD2-A6E137C0096F}
{BE960C1C-7BAD-3DE6-8B1A-2616FE532845}

但如果我做对了,我一点也不知道——前两个返回INSTALLSTATE_UNKNOWN,后两个返回INSTALLSTATE_DEFAULT。哪个有效,但我不知道它是否正确。我认为所有版本和更新都将使用相同的密钥。

所以,我想问的问题是:我应该查询哪些键才能知道是否安装了 Visual C++ 2015 x86 Redistributables 的兼容版本,是没有更新、更新 1 还是更新 2?

4

0 回答 0