我有一个非常老的应用程序的安装程序,需要将其安装在我的 Windows 8.1 PC 上。安装程序会检查 Visual C++ 2005 SP 1,如果没有,它会提示您安装,并重定向您进行下载,但下载页面会重定向到 Microsoft 404。
我安装了 x86 和 x64 的 VC++ 2005 SP 1。
因此,我使用 JustDecompile 反编译了安装程序,安装程序位于 WinForms 中,并使用下面的代码检查 VC++ 2005 SP 1。
基本上,如果这行代码是真的,它会显示一条消息,提示您需要获取 VC++。
如果 (Form1.MsiQueryProductState("{7299052B-02A4-4627-81F2-1818DA5D550D}") != 5)
我读过相关内容,那是在恐龙时代检查 VC++ 2005 的一种可接受的方法,但我认为上面的 GUID(产品代码)对于 Win 8.1 不再准确,因为我已经直接从 Microsoft 获得了 VC++ 2005 SP 1,但仍然找不到它。
现在,我想弄清楚如何解决这个问题。有人知道 MsiQueryProductState 方法如何确定您是否为给定的产品代码安装了某些东西吗?它会在注册表的某个地方查找吗?如果是这样,我可以通过伪造注册表或其他方式来解决这个问题。
如果有任何其他建议,欢迎提出!