MFC中的CRegKey类,是注册表操作类,用法如下:
(1)创建键函数:
CRegKey key;
long ret = key.Create(HKEY_LOCAL_MACHINE,
_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Scale3DC"),
REG_NONE,
REG_OPTION_NON_VOLATILE,
KEY_WRITE | KEY_READ | KEY_WOW64_64KEY);
key.Close();
//在WIN10下须管理员权限
(2)打开键并写入值:
int iMaxNumber = 100;
key.Open(HKEY_CURRENT_USER, _T("SOFTWARE\\TheSoft"));
key.SetStringValue(_T("Password"), _T("123"));
key.SetDWORDValue(_T("count"),iMaxNumber);
key.Close();
long ret1 = key.Open(HKEY_LOCAL_MACHINE,
_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Scale3DC"),
KEY_SET_VALUE | KEY_WOW64_64KEY);
if (ret1 == ERROR_SUCCESS)
{
long ret =key.SetStringValue(_T("DisplayName"), _T("Scale3DC管理系统"));
key.SetStringValue(_T("UninstallString"), GetApplicationPath() + _T("Uninstall.exe"));
key.SetStringValue(_T("DisplayIcon"), GetApplicationPath() + _T("Scale3DC.exe"));
key.SetStringValue(_T("DisplayVersion"), _T("v2018"));
key.SetStringValue(_T("URLInfoAbout"), _T("http://www.zync.com"));
key.SetStringValue(_T("Publisher"), _T("3DC科技有限公司"));
}
key.Close();
(3)读取注册表的信息:
DWORD dwNum;
BOOL bOpenReg = key.Open(HKEY_CURRENT_USER, _T("SOFTWARE\\TheSoft"));
//或者key.QueryValue(dwNum,_T("count"));
key.QueryDWORDValue(_T("count"),dwNum);
(4)删除注册的信息:
key.DeleteValue(_T("count"));
用API删除注册表中的键
VOID CScale3DCControl::DeleteMainKey()
{
HKEY hKey;
DWORD result;
result = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"),
NULL, KEY_SET_VALUE|KEY_WOW64_64KEY, &hKey);//读取注册表串口信息
if (ERROR_SUCCESS == result)
{
long lResult = ::RegDeleteKey(hKey, _T("Scale3DC"));
if (lResult == ERROR_SUCCESS)
{
AfxMessageBox(_T("ok1"));
}
}
else
{
::MessageBox(0, _T("DELETE ERROR!"), _T("Error"), 0);
}
RegCloseKey(hKey);
}
Win10系统须管理员权限
(5)读注册表
HKEY hKey;
DWORD result;
DWORD dwType;
DWORD sl = 255;
TCHAR sz[255]; //存储键值
result = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\abc"),
NULL, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hKey);
if (ERROR_SUCCESS == result)
{
result = RegQueryValueEx(hKey, _T("DisplayIcon"),
NULL, &dwType, (LPBYTE)sz, &sl);
if (result == ERROR_SUCCESS)
{
RegCloseKey(hKey);
return sz;
}
}
else
{
::MessageBox(0, _T("DELETE ERROR!"), _T("Error"), 0);
}
RegCloseKey(hKey);
转载于:https://blog.51cto.com/9233403/2109242