首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

windows 7 上 TRegistry 类有点怪异

2012-08-07 
windows 7 下 TRegistry 类有点怪异本来想用以上代码改变注册表的一些东西。代码如下://m_Reg 为 TRegistry

windows 7 下 TRegistry 类有点怪异

本来想用以上代码改变注册表的一些东西。
 
代码如下:

  //m_Reg 为 TRegistry 实例指针

  m_Reg->RootKey = HKEY_LOCAL_MACHINE;

  bool ret = m_Reg->OpenKey("SOFTWARE\\XXX01\\XXX02\\6.0",true);

  m_Reg->WriteString("ApplicationPath",GetCurrentDir());



  以上代码在XP下运行没什么问题,在Windows 7 下用了管理员身份运行, m_Reg->OpenKey 函数

返回true了,但看注册表中 "SOFTWARE\\XXX01\\XXX02\\6.0"并没有建立,m_Reg->WriteString 函数也

没有起作用。

   
  然后我手动导入注册表"SOFTWARE\\XXX01\\XXX02\\6.0"字串和 "ApplicationPath"="C:\\Program Files\\XXX01"

字串,然后想用刚才的代码改变"ApplicationPath"的值,但也改不了。


  没办法,我就安装了XXX01.exe程序,它安装的后会在注册表中"SOFTWARE\\XXX01\\XXX02\\6.0"建立

 "ApplicationPath"="C:\\Program Files\\XXX01"; 然后我再用运行上面代码改变"ApplicationPath"的值,

这样就可以了。

  做了很多次实验了,试了创建改变其它键也没成功,什么会这样?真想不明白,我是windows 7 64位系统。 


大家有没有遇到这种情况。

   

 

[解决办法]
在windows7中,它在Wow6432Node下,和原先XP放的路径不一样。
[解决办法]
不过读取是和原来XP是一样,如创建:

C/C++ code
TRegistry *reg=new TRegistry();                reg->RootKey=HKEY_LOCAL_MACHINE;reg->OpenKey("\\SOFTWARE\\blh\\SkinSharp\\setup",true);                            reg->WriteString("Name",OpenDialog1->FileName.t_str());                            reg->CloseKey();                            delete reg;
[解决办法]
mmfeng说的对,这不是Windows7的问题,而是64位操作系统的原因。32位的程序读写的注册表键是在Wow6432Node节点下。

热点排行