应用中需要对MSSoap3.0的安装情况检测,使用下面的代码:BOOL blResult=TRUE;
CRegKey keyVersion;
HRESULT lResult = keyVersion.Open(HKEY_CLASSES_ROOT,"MSSOAP.SoapClient30\\Clsid");
if (FAILED(lResult))
blResult=FALSE;
else
{
char szVersion[256];
DWORD dwSize=256;
HRESULT lResultQuery = keyVersion.QueryValue(szVersion,"(默认)",&dwSize);
if (FAILED(lResult))
blResult=FALSE;
keyVersion.Close();
}
return blResult;返回的是真,因为系统已经安装了MSSOAP3.0,而且存在这样键。但在没有安装的系统中检测,也返回真,事实上,系统中根本就不存在上面的键。为什么?该如何解决?
CRegKey keyVersion;
HRESULT lResult = keyVersion.Open(HKEY_CLASSES_ROOT,"MSSOAP.SoapClient30\\Clsid");
if (FAILED(lResult))
blResult=FALSE;
else
{
char szVersion[256];
DWORD dwSize=256;
HRESULT lResultQuery = keyVersion.QueryValue(szVersion,"(默认)",&dwSize);
if (FAILED(lResult))
blResult=FALSE;
keyVersion.Close();
}
return blResult;返回的是真,因为系统已经安装了MSSOAP3.0,而且存在这样键。但在没有安装的系统中检测,也返回真,事实上,系统中根本就不存在上面的键。为什么?该如何解决?
解决方案 »
- 问个MDI子窗口建立的问题
- 武汉市武昌需VC程序员
- stdafx.h的作用?
- 我该从那本书开始看起,请高手帮忙为我做个书排序算法:)
- 关于菜单的问题;在B类中,动态加载A类中一个菜单时,菜单为灰色(如何实现它的功能?使它不为灰?)
- 为什么在WIN98中不能执行Unicode版的Windows函数?
- 高手请教:我用ATL变了一个控件,用来做网上发布的,如何注册呀
- 各们帮帮忙,CPU的使用率总是100%
- 12345678()请进~~~~~~~~还想问你一个文件(夹)改名的问题。
- 急,请帮忙解决CRecordset问题。
- MSFlexGrid控件中怎样加一新行啊?救命~~
- 下面的VB代码如何改成VC代码?100分!!!
另外,HRESULT lResultQuery = keyVersion.QueryValue(szVersion,"(默认)",&dwSize); 有个错误:读取默认值应该如此
HRESULT lResultQuery = keyVersion.QueryValue(szVersion,"",&dwSize);
long nRet = RegOpenKeyEx(HKEY_CLASSES_ROOT,"MSSOAP.SoapClient.1\\Clsid",0,KEY_EXECUTE,&hRegKey); if(hRegKey)
{ BYTE byteCLSID[256];
DWORD dwSize = 256;
if(RegQueryValueEx(hRegKey, _T(""),0,NULL,byteCLSID,&dwSize)==ERROR_SUCCESS)
{
sCLSID = byteCLSID;
MessageBox(sCLSID,"Regstry",MB_OK);
}
else
MessageBox("MS SOAP3 CLSID 没有找到!","Regstry",MB_OK); RegCloseKey(hRegKey);
}
else
MessageBox("MS SOAP3 没有找到!","Regstry",MB_OK);
看它转到哪里去了
另外,根据 lResult 可以用 FormatMessage 得到错误信息