当前位置:首页 » C语言&C++

如何用C++读取注册表信息

2011-04-27 12:53 本站整理 浏览(5332)

注册表是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。早在Windows 3.0推出OLE技术的时候,注册表就已经出现。随后推出的Windows NT是第一个从系统级别广泛使用注册表的操作系统。但是,从Microsoft Windows 95开始,注册表才真正成为Windows用户经常接触的内容,并在其后的操作系统中继续沿用至今。

怎样用C++来读取系统的注册表,从而知道注册表的信息呢?我们整理了一段实现用C++读取注册表的代码。代码如下:

// 读取注册表

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

}[nextqage]

2.写注册表

// 修改注册表

BOOL ModifyRegisteTable(CString root,CString path, CString key, CString value)

{

HKEY hAppKey;

DWORD dwDisposition = MAX_PATH*sizeof(TCHAR);

LPCTSTR WINDS_SERVICE_REGISTRY_KEY=path;

LPCTSTR DATA_FILE_SUB_KEY=key;

char szDataFile[80]; strcpy(szDataFile,value);

if(root=="HKEY_LOCAL_MACHINE")

{

if (ERROR_SUCCESS != RegCreateKeyEx (

HKEY_LOCAL_MACHINE,

WINDS_SERVICE_REGISTRY_KEY,

0,

NULL,

REG_OPTION_NON_VOLATILE,

KEY_WRITE,

NULL,

&hAppKey,

&dwDisposition))

{

return false;

}

else

{

if (ERROR_SUCCESS != RegSetValueEx (hAppKey,

DATA_FILE_SUB_KEY,

0,

REG_SZ,

(LPBYTE)szDataFile,

(lstrlen (szDataFile)+1)*sizeof(TCHAR)))

{

return false;

}

RegCloseKey (hAppKey);

}

}

if(root=="HKEY_CURRENT_USER")

{

if (ERROR_SUCCESS != RegCreateKeyEx (

HKEY_CURRENT_USER,

WINDS_SERVICE_REGISTRY_KEY,

0,

NULL,

REG_OPTION_NON_VOLATILE,

KEY_WRITE,

NULL,

&hAppKey,

&dwDisposition))

{

return false;

}

else

{

if (ERROR_SUCCESS != RegSetValueEx (hAppKey,

DATA_FILE_SUB_KEY,

0,

REG_SZ,

(LPBYTE)szDataFile,

(lstrlen (szDataFile)+1)*sizeof(TCHAR)))

{

return false;

}

RegCloseKey (hAppKey);

}

}

return true;

}