OCX 路径查找
2014-01-22 10:03
267 查看
ocx在本机注册的本质,是将ocx的一些信息写到注册表指定项下,这样系统就可以根据这些配置找到ocx,并将其载入到内容中使用,路径大概是:
HKEY_CLASSES_ROOT\CLSID\{CD0A43F4-C9C5-423B-9D67-944A0E9F7460}
因此如果我们想得到已注册控件的路径,直接到指定注册表项下查找即可,如下C++方式:
LPTSTR GetOcxPathFromCLSID(LPTSTR classId,LPTSTR sPath,size_t nSize)
{
CString
strPath;
HKEY hKey = 0;
CString
strSubKey;
DWORD dwType = 0;
LPBYTE
lpData = NULL;
DWORD cbData = 0;
strSubKey.Empty();
strSubKey.Format(_T("CLSID\\{%s}\\InprocServer32"),classId);
if(ERROR_SUCCESS != RegOpenKeyEx(HKEY_CLASSES_ROOT,strSubKey,0,KEY_READ,&hKey))
{
RegCloseKey(hKey);
hKey = NULL;
return "";
}
dwType = REG_SZ;
lpData = new BYTE[1024];
cbData = 1024;
if(ERROR_SUCCESS != RegQueryValueEx(hKey,_T(""),NULL,&dwType,lpData,&cbData))
{
RegCloseKey(hKey);
hKey = NULL;
delete []lpData;
lpData = NULL;
return "";
}
RegCloseKey(hKey);
hKey = NULL;
lpData[cbData] = '\0';
strPath.Empty();
strPath.Format(_T("%s"),lpData);
delete[] lpData;
lpData = NULL;
if(nSize > strPath.GetLength()-1)
{
sprintf(sPath,"%s",(LPTSTR)(LPCTSTR)strPath);
}
else
return "";
return sPath;
}
HKEY_CLASSES_ROOT\CLSID\{CD0A43F4-C9C5-423B-9D67-944A0E9F7460}
因此如果我们想得到已注册控件的路径,直接到指定注册表项下查找即可,如下C++方式:
LPTSTR GetOcxPathFromCLSID(LPTSTR classId,LPTSTR sPath,size_t nSize)
{
CString
strPath;
HKEY hKey = 0;
CString
strSubKey;
DWORD dwType = 0;
LPBYTE
lpData = NULL;
DWORD cbData = 0;
strSubKey.Empty();
strSubKey.Format(_T("CLSID\\{%s}\\InprocServer32"),classId);
if(ERROR_SUCCESS != RegOpenKeyEx(HKEY_CLASSES_ROOT,strSubKey,0,KEY_READ,&hKey))
{
RegCloseKey(hKey);
hKey = NULL;
return "";
}
dwType = REG_SZ;
lpData = new BYTE[1024];
cbData = 1024;
if(ERROR_SUCCESS != RegQueryValueEx(hKey,_T(""),NULL,&dwType,lpData,&cbData))
{
RegCloseKey(hKey);
hKey = NULL;
delete []lpData;
lpData = NULL;
return "";
}
RegCloseKey(hKey);
hKey = NULL;
lpData[cbData] = '\0';
strPath.Empty();
strPath.Format(_T("%s"),lpData);
delete[] lpData;
lpData = NULL;
if(nSize > strPath.GetLength()-1)
{
sprintf(sPath,"%s",(LPTSTR)(LPCTSTR)strPath);
}
else
return "";
return sPath;
}
相关文章推荐
- 这是二零一四年十点整的广州
- 虚拟机栈和本地方法栈溢出
- 搜索SD卡文件并动态更新数据
- 再谈PHP、Python与Ruby
- findmaven.net vs findjar.com-国际版网页重新设计
- findmaven.net vs findjar.com-查看dependency信息
- findmaven.net vs findjar.com-查看Jar的依赖树
- findmaven.net vs findjar.com-查询这个jar的所有版本
- findmaven.net vs findjar.com-log4j的HtmlLayout定制
- findmaven.net vs findjar.com-查看源码功能
- 动态链接库与静态链接库的区别
- 图解HTTPS
- 那些年不错的Android开源项目-个性化控件篇
- 搜索对不同域名后缀排名是否不一样
- 网站seo整站优化有什么优势
- 企业站如何做长尾关键词seo优化
- findmaven.net vs findjar.com-find jar,find maven
- 利用findmaven.net解决ClassNotFoundException
- 戊戌宮
- Android 4.0及以上版本接收开机广播BOOT_COMPLETED、开机自启动服务