您的位置:首页 > 其它

VC小技巧(7)-----注册表的简单设置和查询函数

2006-10-13 15:51 387 查看
注册表记录着软硬件的一些信息
对于程序开发者来说,注册表也是一个不错的存放信息的容器!有时候用注册表记录一些软件的重要参数,或者是记录当前某些值,使软件在下次执行时保持当前值。

DWORD SetRegistry(char *szRegPort, char *szKey, char *szValue)
{
char ValueName[128];
HKEY hkPort;
DWORD cbData = 256;
DWORD retCode, dwDisp;

if ((retCode=RegCreateKeyEx(HKEY_LOCAL_MACHINE, szRegPort, 0, NULL, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, NULL, &hkPort, &dwDisp)) == ERROR_SUCCESS)
{
lstrcpy(ValueName, szKey);

retCode = RegSetValueEx(hkPort, // Key handle returned from RegOpenKeyEx.
ValueName, // Name of value.
0, //reserved , must be null
REG_SZ, // Type of data.
(PBYTE)szValue, // Data buffer.
strlen(szValue)); // Size of data buffer.
RegCloseKey(hkPort);
}

return retCode;
}

DWORD QueryRegistry(char *szRegPort, char *szKey, char *szValue)
{
char ValueName[128];
HKEY hkPort;
BYTE bData[256]; // in registry the max length is banner user name
DWORD cbData = 256;
DWORD retCode;
DWORD dwType=REG_SZ;

if ((retCode = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szRegPort, 0, KEY_EXECUTE, &hkPort)) == ERROR_SUCCESS)
{
lstrcpy(ValueName, szKey);

retCode = RegQueryValueEx (hkPort, // Key handle returned from RegOpenKeyEx.
ValueName, // Name of value.
NULL, //reserved , must be null
&dwType, // Type of data.
bData, // Data buffer.
&cbData); // Size of data buffer.

if (retCode == ERROR_SUCCESS)
{
strcpy(szValue,(const char*)bData);
}

RegCloseKey(hkPort);
}

return retCode;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: