首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

vcredist_x86.exe装配后是在注册表哪个键值

2013-04-02 
vcredist_x86.exe安装后是在注册表哪个键值?求助。现在做了一个安装程序 在没装过VC的机器上会“应用程序正

vcredist_x86.exe安装后是在注册表哪个键值?
求助。

现在做了一个安装程序 在没装过VC的机器上会“应用程序正常初始化失败“的错误,无法打开。

需要安装vcredist_x86.exe、

想在安装步骤里加入判断软件先决条件的对话框,需要查找注册表,求助vcredist_x86.exe是看注册表哪个键值?
[解决办法]
推荐regmon,安的过程中看看注册表那里变了就是哪里呗,不过一般软件都在卸载那里有程序同名的键值,你可以找找
[解决办法]
直接到winsxs目录看看有没有相应的文件在不在即可
[解决办法]
已经安装的软件都在
LM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\
下可以找到, 每个产品的guid都是固定的.

使用注册表方式有问题, 就是在 64 os上, 
你能访问到的注册表位置取决于你程序是 32 还是 64的.
操作系统会给你转向.

所以, 判断一个软件是否安装的最好方式, 还是使用 msi api 来做.
比如


bool
InstallPage::checkCADInstalled(LPCTSTR pszProductCode)
{
  bool found = false;
  if (pszProductCode && pszProductCode[0]) {
    MSIHANDLE hProduct = 0;
    UINT iRet = MsiOpenProduct(pszProductCode, &hProduct);
    bool flag = false;
    switch (iRet)
    {
    case ERROR_SUCCESS:
      flag = true;
      break;
    case ERROR_UNKNOWN_PRODUCT:
    case ERROR_INVALID_PARAMETER:
    case ERROR_INSTALL_SOURCE_ABSENT:
    case ERROR_INSTALL_FAILURE:
    case ERROR_BAD_CONFIGURATION:
    default:
      break;
    }
    if (flag) {
      found = true;
      MsiCloseHandle(hProduct);
    } else {
      GetManager()->ErrorBox(_T("检测失败"), _T("产品没有安装"));
    }
  }
  return found;
}
 
[解决办法]
XP系统下的键值:{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}
[解决办法]
既然是安装程序,那么就应该假定目标机器上没有安装任何东东。
你应该直接安装运行库。
InstallShield 作为预安装。

运行库安装包会自己判断的。

热点排行