我正在尝试使用MsiGetProductInfo函数获取我的win fomrs应用程序的已安装版本号。我试着改变我在这个post上找到的代码,但是当我改变对函数的调用时,我得到的只是看到文本
MsiGetProductInfo("{9806C9BE-59D4-4DEE-802F-0E492023DE8A}", "INSTALLPROPERTY_VERSIONSTRING", builder, ref len);
它是一个安装有标准vs2010安装项目的4.0 c#Winforms项目。客户端机器赢了7并赢得XP
答案 0 :(得分:0)
您是否检查了该功能的返回值?如果它返回错误,则缓冲区可能会被垃圾填满。
这是MSDN页面here
中可能返回的列表返回值
ERROR_BAD_CONFIGURATION 配置数据已损坏。
ERROR_INVALID_PARAMETER 将无效参数传递给函数。
ERROR_MORE_DATA 缓冲区太小,无法容纳请求的数据。
ERROR_SUCCESS 该功能成功完成。
ERROR_UNKNOWN_PRODUCT 该产品未公开或未安装。
ERROR_UNKNOWN_PROPERTY 该物业未被承认。
注意如果要查询的应用程序已公布但未安装,则MsiGetProductInfo函数将返回ERROR_UNKNOWN_PROPERTY。
答案 1 :(得分:0)
我知道这已经很老了,但是最近我遇到了类似的问题,解决方法是将“ INSTALLPROPERTY_VERSIONSTRING”更改为“ VersionString”