菜鸟求救:WinCE & EVC下如何保存注册表?

yao_xuejun 2004-04-19 03:28:29
我编程修改了注册表,发现重起之后,修改的结果就丢失了,没有保存下来,代码如下:
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,其修改结果应该是保存下来的,但它就是保存不下来,不知道为什么,各位高手帮小弟一把!谢谢!
...全文
95 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ms44 2004-04-26
  • 打赏
  • 举报
回复
这是正常的。
要看你的系统运行时实在爱哪个地方了。
如果是RAM,那么自然重新启动后是没有的。
要最后写到FLASH才是正的写了。
dizzo 2004-04-25
  • 打赏
  • 举报
回复
平台要使用 hive-based registry 才行。
yao_xuejun 2004-04-24
  • 打赏
  • 举报
回复
up
yao_xuejun 2004-04-22
  • 打赏
  • 举报
回复
up
yao_xuejun 2004-04-19
  • 打赏
  • 举报
回复
关于保存不下来:在没有重起之前,修改的结果是有的,即使程序退出,当重起之后,其修改的结果就没了!

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧