无法完成的任务?

clasj 2002-12-28 11:26:27
我想编一个简单的修改注册表的程序,前提是知道注册表的键位与键值.
思路是这样的:
在Edit1中输入注册表键位.如:HKEY_CURRENT_USER\Control Panel\Desktop
在Edit2中输入注册表键值.如:PaintDesktopVersion="0"
点击Button1完成修改.
你认为这样可能吗?怎样实现?
如果你认为不可能该如何改进呢?
...全文
30 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
clasj 2002-12-29
  • 打赏
  • 举报
回复
我再怀也知道TRegistry这个类撒,有本事把代码写出来!
wangxiangsjz 2002-12-29
  • 打赏
  • 举报
回复
同上。
ilikeff8 2002-12-29
  • 打赏
  • 举报
回复
你只是不知道有TRegistry这个类而已,如果连这都无法完成,borland公司倒闭算了
invalid 2002-12-29
  • 打赏
  • 举报
回复
LiBran中了激将法了。对太懒的人,这样不好。
Libran 2002-12-29
  • 打赏
  • 举报
回复
按你的要求的代码:(在界面上放两个Edit和一个Button)
#include <Registry.hpp>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//从Edit1->Text中分离出根键、键位
int p = Edit1->Text.Pos("\\");
AnsiString RootKey = Edit1->Text.SubString(1, p-1);//获得根键
AnsiString KeyPos = Edit1->Text.SubString(p+1, Edit1->Text.Length()-p);//键位

//从Edit2->Text中分离出键名、键值
p = Edit2->Text.Pos("=");
AnsiString KeyName = Edit2->Text.SubString(1, p-1);//键名
AnsiString KeyValue = Edit2->Text.SubString(p+1, Edit1->Text.Length()-p);//键值

TRegistry *reg = new TRegistry();
//由于RootKey不能以字符串来赋值,只好麻烦一点儿,判断后赋值(我只判断了三个)
if (RootKey=="HKEY_USERS") reg->RootKey = HKEY_USERS;
if (RootKey=="HKEY_LOCAL_MACHINE") reg->RootKey = HKEY_LOCAL_MACHINE;
if (RootKey=="HKEY_CURRENT_USER") reg->RootKey = HKEY_CURRENT_USER;

reg->OpenKey(KeyPos, true);//打开指定键位,true表示不存在则创建该键
reg->WriteString(KeyName, KeyValue); //写入键名、键值,不存在时会自动创建;这里是当做字串值来写的
}

运行后:
在Edit1中输入注册表键位.如:HKEY_CURRENT_USER\Control Panel\Desktop
在Edit2中输入注册表键值.如:PaintDesktopVersion="0"
点击Button1完成修改.

Libran 2002-12-28
  • 打赏
  • 举报
回复
用四个Edit,分别对应根键、键位、键名、键值,还要有一个BomboBox指出类型
然后就可以:
TRegistry *reg = new TRegistry();
reg->RootKey = 根键;
reg->OpenKey(键位);
reg->WirteString(键名, 键值); //类型为字串值
reg->WriteInteger(键名, 键值); //类型为双字节值
。。。
invalid 2002-12-28
  • 打赏
  • 举报
回复
这怎么不可能了。又那标题唬人。
自己看看help应该能写的出来。

13,825

社区成员

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

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