菜鸟求救:WinCE & EVC下如何保存注册表?
我编程修改了注册表,发现重起之后,修改的结果就丢失了,没有保存下来,代码如下:
bool CServer::RegSetIP(LPCTSTR lpszIPAddress, LPCTSTR lpszNetMask, LPCTSTR lpszGateWay)
{
HKEY hKey;
CString strKeyName = CString(_T("Comm\\")) + m_strAdapterName + CString(_T("\\Parms\\TCPIP"));
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, strKeyName, 0, KEY_WRITE, &hKey) != ERROR_SUCCESS)
return false;
if( RegSetValueEx(hKey, _T("IPAddress"), 0, REG_SZ, (BYTE*)lpszIPAddress, _tcslen(lpszIPAddress) * 2 + 2) != ERROR_SUCCESS ||
RegSetValueEx(hKey, _T("SubnetMask"), 0, REG_SZ, (BYTE*)lpszNetMask, _tcslen(lpszNetMask) * 2 + 2) != ERROR_SUCCESS ||
RegSetValueEx(hKey, _T("DefaultGateway"), 0, REG_SZ, (BYTE*)lpszGateWay, _tcslen(lpszGateWay) * 2 + 2) != ERROR_SUCCESS)
return false;
// 此处无法保存注册表,不知道为何。
// 在调试中发现,可以修改注册表,但修改的结果需要研博注册表工具“保存”。(WinCE是研博公司的,它里面有一个"保存注册表"按钮,程序修改的结果,需要点击它才能保存下来,否则重起之后就没了!)
// 否则重启后,修改的结果丢失,也即修改的结果没有最终保存下来。
if(RegFlushKey(hKey) == ERROR_SUCCESS)
{
if(RegCloseKey(hKey) == ERROR_SUCCESS)
return true;
return false;
}
else
{
RegCloseKey(hKey); // 此函数在返回之前,会保存注册表。由此,不需要调用 RegFlushKey 函数。
return false;
}
}
我想,调用RegSetValueEx修改注册表,然后RegCloseKey,其修改结果应该是保存下来的,但它就是保存不下来,不知道为什么,各位高手帮小弟一把!谢谢!