REG_OPTION_VOLATILE和REG_OPTION_NON_VOLATILE
来源:互联网 发布:c去掉数组中的重复元素 编辑:程序博客网 时间:2024/06/08 01:07
重启电脑创建的注册表键值丢失原因
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. TheRegSaveKey function does not save volatile registry keys. This flag is ignored for keys that already exist.
所以,重启后这些键值当然就没有了。
解决办法
很简单,使用REG_OPTION_NON_VOLATILE 即可
RegCreateKeyEx(HKEY_CURRENT_USER, DemoRegKey, 0, NULL, REG_OPTION_NON_VOLATILE , KEY_ALL_ACCESS , NULL , &hKey, NULL);
REG_OPTION_VOLATILE可以用在测试上。一重启,之前创建的键值都没了。
而若想重启之后注册表键值也仍然保留的话就用REG_OPTION_NON_VOLATILE。
REG_OPTION_NON_VOLATILE:
该宏是RegCreateKeyEx函数的参数可选项。
LONG RegCreateKeyEx( HKEY hKey,
LPCWSTR lpSubKey,
DWORD Reserved,
LPWSTR lpClass,
DWORD dwOptions,
REGSAM samDesired,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
PHKEY phkResult,
LPDWORD lpdwDisposition );
看看MSDN对它的说明:
Default setting. All registry keys are created as non-volatile and the information stored in memory is preserved when the OS is restarted. The RegSaveKey function saves keys that are non-volatile.
翻译:默认设置。 所有注册表项 创建 作为非易失性 和 操作系统 重新启动 时保留 在内存 中存储的信息 。 RegSaveKey 功能 键是 非易失性 保存 。
意思是说如果参数 dwOptions 选择REG_OPTION_NON_VOLATILE,则通过RegCreateKeyEx创建的注册表是永久的,不会因为计算机的重启而消失。相反参数选择REG_OPTION_VOLATILE,则表明创建的注册表是临时的,计算机重启后该注册表不存在。
- REG_OPTION_VOLATILE和REG_OPTION_NON_VOLATILE
- REG_OPTION_NON_VOLATILE
- . 和 ->
- || 和&&
- .和::
- “?”和“!”
- #和##
- && 和 ||
- 、和
- #和##
- .//和..//
- 和
- ?和\?
- ./ 和 ../
- #和##
- #、和##
- #和##
- *和&
- 前端设计:让字体大小自由缩放
- android和java获取系统日期时间
- android的ViewPager和Animation的一些使用(一)
- Myeclipse支持hibernate逆向工程
- 用QML实现一个调色程序
- REG_OPTION_VOLATILE和REG_OPTION_NON_VOLATILE
- 2014年CCTV央视广告代理 世纪盘古《我家年年高》冠名合作方案
- 关于兼容导入excel2003和excel2007版本注意事项
- Oracle入门介绍
- 小手一打就是标准的博弈论。
- 了解负载均衡 会话保持 session同步
- JSP中的编码
- 通过network_link导出含有long字段的表
- 数学之美系列二十二:由电视剧《暗算》所想到的 — 谈谈密码学的数学原理