为什么判断不了键的存在???????

eyesonmecn 2003-08-25 04:17:00
bool RegAutoProgram(AnsiString kName,AnsiString kAllPath,bool on)
{
bool temp=false;
if(kAllPath.SubString(kAllPath.Length(),1)=="\\")
return temp;
TRegistry *Reg=new TRegistry;
Reg->RootKey=HKEY_CURRENT_USER;
Reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",true);
try
{
if(on)
{
if(Reg->KeyExists(kName)) <<<-------------------判断键的存在,总是
判定是不存在的
{
if(Reg->ReadString(kName)==kAllPath)
temp= true;
}
else
{
Reg->WriteString(kName,kAllPath);
temp=true;
}
}
else
{
Reg->DeleteKey(kName);
temp=true;
}
}
catch(...)
{}
Reg->CloseKey();
delete Reg;
return temp;
}
我在注册表中注册一个键,我想判断一下它是否存在,但KEYEXSITES总是判定不存在的.请各高人请教!分数没有了,只有这么多,请见谅!!!
...全文
30 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
7rainbow 2003-08-26
  • 打赏
  • 举报
回复
你用Reg->ReadString读键就行了,读到就存在,读不到就是不存在了,
不用KeyExists了。(我是这样用的。)
jb9802 2003-08-26
  • 打赏
  • 举报
回复
把KeyExists 改成 ValueExists 是值不是键啦。
eyesonmecn 2003-08-26
  • 打赏
  • 举报
回复
不是,我在调试程序下通过断点知道的,一判断键的存在就一定是无的,就是跳到ELSE下的语句去.这是为什么的呢?
TR@SOE 2003-08-25
  • 打赏
  • 举报
回复
你这个程序在什么状态下运行的?从你的程序来看,似乎是想在Windows启动前在注册表里写点什么东西让你的程序运行。但是,我的印象中,在Windows接受用户登陆,开始启动调用Registry里的东西时,CURRENT_USER下的键都还在动态创建过程中,也就是说Windows将从USERS拷贝当前用户的注册表信息而创建对应当前登陆用户的CURRENT_USRE注册表信息。

所以,你不妨直接修改USER下某个用户(或所有用户,只要你有权限)的REGISTRY看有没有效果。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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