在网上有一个写入注册表的类,很不错,一直使用。但是发现有一个问题,电脑重启之后,写入注册表的值,就会消失。
/*================================================================
* 函数名: CreateKey
* 参数: (HKEY hRootKey, LPCTSTR pszPath)
* 功能描述: 创建路径
* 返回值: BOOL
================================================================*/
BOOL CMyRegistry::CreateKey (LPCTSTR pszPath)
{
DWORD dw;
LONG ReturnValue = ::RegCreateKeyEx (m_hRootKey, pszPath, 0L, NULL,
REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL,
&m_hSubKey, &dw);
if(ReturnValue == ERROR_SUCCESS)
return TRUE;
return FALSE;
}
查看相关信息之后发现,REG_OPTION_VOLATILE 参数的意思是创建的注册表键值都位于内存中,不会保存到相应的注册表文件中。
英文如下:
All registry keys are created as volatile, and the information is stored in memory and is not preserved when the corresponding registry hive is unloaded. For HKEY_LOCAL_MACHINE, this occurs when the OS is shut down. The RegSaveKey function does not save volatile registry keys. This flag is ignored for keys that already exist.
将代码修改为:
LONG ReturnValue = ::RegCreateKeyEx (m_hRootKey, pszPath, 0L, NULL,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL,
&m_hSubKey, &dw);
之后就可以了