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;
}