c++ 读取注册表信息

lhjiang 发布于 2014/08/22 08:23
阅读 1K+
收藏 0

有如下一段读取注册表的c++代码,方法能运行就是只能输出获取的信息的第一个字母,不知道问题出在哪里,求c++的大牛们解惑:

#include "windows.h"
#include "atlstr.h"


CString ReadRegisteTable(CString root,CString path, CString key)  
{  
HKEY hAppKey;  
LPCTSTR WINDS_SERVICE_REGISTRY_KEY=path;  
LPCTSTR DATA_FILE_SUB_KEY=key;  
char szDataFile[80];  
if(root=="HKEY_LOCAL_MACHINE")  
{  
if (ERROR_SUCCESS == RegOpenKeyEx (HKEY_LOCAL_MACHINE,WINDS_SERVICE_REGISTRY_KEY,0,KEY_READ,&hAppKey))  
{  
ULONG cbSize = MAX_PATH*sizeof(TCHAR);  
DWORD dwFlag = RegQueryValueEx(hAppKey,DATA_FILE_SUB_KEY,NULL,NULL,(LPBYTE)szDataFile,&cbSize);  
RegCloseKey (hAppKey);  
if (ERROR_SUCCESS == dwFlag)  
{  
CString strDate=szDataFile; //MessageBox(strDate);  
if(strDate.GetLength()>0) 
return strDate;  
else 
return "";  
}  
return "";  
}  
}  
if(root=="HKEY_CURRENT_USER")  
{  
if (ERROR_SUCCESS == RegOpenKeyEx (HKEY_CURRENT_USER,WINDS_SERVICE_REGISTRY_KEY,0,KEY_READ,&hAppKey))  
{  
ULONG cbSize = MAX_PATH*sizeof(TCHAR);  
DWORD dwFlag = RegQueryValueEx (hAppKey,DATA_FILE_SUB_KEY,NULL,NULL,(LPBYTE)szDataFile,&cbSize);  
RegCloseKey (hAppKey);  
if (ERROR_SUCCESS == dwFlag)  
{  
CString strDate=szDataFile; //MessageBox(strDate);  
if(strDate.GetLength()>0)
return strDate;  
else 
return "";  
}  
return "";  
}  
}  
return "";  
}

加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部