对于修改注册表项值,一事一直未明,望各位出手相助,感谢

zvrop 2003-05-30 01:35:38
看了有关注册表项值的api(RegOpenKey,RegOpenKeyEx,RegCreateKey,RegDeleteKey…………等等),,,发现唯独修改项值的api没有……

偶还发现,修改健值的函数有RegSetValue

为什么没有RegSetKey函数??我像重命名一个注册表项值,就比如像

HKEY_CURRENT_USER\Software\lcc
~~~~~~~~
上面那个software我想重命名,怎么办?,找了很久找不到方法……

那么修改项值到底用什么方法,我一直迷惑着(能力有限啊)……

还请高手点破迷津,,,,谢谢了

...全文
59 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zvrop 2003-06-02
  • 打赏
  • 举报
回复
明白,,,结帖,,,,3q…………
ghtsao 2003-06-01
  • 打赏
  • 举报
回复
不管你相不相信,注册表编辑器大概就是这样完成操作的,跟把一个目录移到另一个盘上很相似,如果你不怕破坏你的系统,可以做一个测试,把包含内容比较多的子键换个名字,花的时间也比较长哦,按你的理论,换个名字不会因为内容多少而改变更新时间,不过似乎不是如此。

即使是拷贝方式换名字,我觉得也是合理的,因为有些存贮结构只适合做快速查询,所以存贮排序规则非常严格,改变名字就意味着要重新排序,排序的算法可能比较费时,跟新建也许没什么区别。

自已想想吧?
zvrop 2003-05-31
  • 打赏
  • 举报
回复
不会吧,,,帮帮忙啊,顶一下
zvrop 2003-05-30
  • 打赏
  • 举报
回复
首先谢谢楼上的热心回答,,再等等吧,,这样的方法很多不方便

注册表有提供重命名修改选择,就说明,应该有修改项值的简单方法

子项太大的话,这重命名时间是花很多的……

大家帮忙想想啊~~~~

ghtsao 2003-05-30
  • 打赏
  • 举报
回复
注册表的设计跟LDAP服务器一样,主要面向高速查询,而写入比较少的结构。对写入的支持不是很强,但查询的速度特别快。

下面的函数可以用来设置子键下的项值,请尽量用带Ex的接口,同名不带Ex是兼容旧板本设计。
LONG RegSetValueEx(
HKEY hKey, // handle to key
LPCTSTR lpValueName, // value name
DWORD Reserved, // reserved
DWORD dwType, // value type
CONST BYTE *lpData, // value data
DWORD cbData // size of value data
);

重命名子键恐怕不行,但也不是没有办法解决呀!
1、先创建新键名。
RegCreateKeyEx

2、重复列举旧键下的所有子键
RegEnumKeyEx

2.1 保存子键到一个文件。
RegSaveKey

2.2 恢复子键到新键中
RegRestoreKey

3. 重复列举旧键下的项值
RegEnumValue

3.1 RegSetValueEx 写项值到新键中

4. 删除旧键
RegDeleteKey

办法笨了点,但是可行的,注册表不是为了方便修改设计的,不要怪MS,这也是LDAP服务的特点。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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