c++builder中怎么实现添加注册表信息?

d383137359 2010-12-22 07:06:05
例如,点击一下button 然后向注册表指定的分支下添加一个项名称.并且设置它的属性,如:DisplayName、Description、ImagePath等等为多少,这怎么才能办到?
...全文
138 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧牛童子 2010-12-23
  • 打赏
  • 举报
回复
互联网是最好的了,想要的东西,一搜一大堆,呵。源码都有。
周药师 2010-12-23
  • 打赏
  • 举报
回复
這個東西 谷歌搜索有一籮筐的東西
lz自己動動手吧
古典概型 2010-12-22
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------

#include <vcl.h>
//要包含此头文件
#include <registry.hpp>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute()){
Edit1->Text=OpenDialog1->FileName;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TRegistry *reg=new TRegistry;
try{
reg->RootKey=HKEY_CURRENT_USER;
if(!reg->OpenKey("\\Software\\Science\\File List",false)){
reg->CreateKey("\\Software\\Science\\File List");
reg->OpenKey("\\Software\\Science",true);
reg->WriteString("Ver","1.0");
reg->CloseKey();
reg->OpenKey("\\Software\\Science\\File List",true);
reg->WriteString("1","");
reg->WriteString("2","");
reg->WriteString("3","");
}
}
__finally{
reg->CloseKey();
delete reg;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TRegistry *reg=new TRegistry;
try{
reg->RootKey=HKEY_CURRENT_USER;
if(reg->OpenKey("\\Software\\Science\\File List",false)){
reg->WriteString("3",reg->ReadString("2"));
reg->WriteString("2",reg->ReadString("1"));
reg->WriteString("1",Edit1->Text);
}else{
MessageBox(Handle,"保存文件列表失败","错误",MB_OK|MB_ICONERROR);
}
}
__finally{
reg->CloseKey();
delete reg;
FileList1Click(Sender);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FileList1Click(TObject *Sender)
{
String TempStr;
TRegistry *reg=new TRegistry;
try{
reg->RootKey=HKEY_CURRENT_USER;
if(reg->OpenKey("\\Software\\Science\\File List",false)){
TempStr=reg->ReadString("1");
if(TempStr!=""){
FileList1->Caption=TempStr+"(&1)";
FileList1->Visible=true;
}else{
FileList1->Visible=false;
}
TempStr=reg->ReadString("2");
if(TempStr!=""){
FileList2->Caption=TempStr+"(&2)";
FileList2->Visible=true;
}else{
FileList2->Visible=false;
}
TempStr=reg->ReadString("3");
if(TempStr!=""){
FileList3->Caption=TempStr+"(&3)";
FileList3->Visible=true;
}else{
FileList3->Visible=false;
}
}
}__finally{
reg->CloseKey();
delete reg;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MainMenu1Change(TObject *Sender, TMenuItem *Source, bool Rebuild)
{
FileList1Click(Sender);
}
//---------------------------------------------------------------------------
古典概型 2010-12-22
  • 打赏
  • 举报
回复
很简单,自己找本书看看
ccrun.com 2010-12-22
  • 打赏
  • 举报
回复
用Registry单元提供的TRegistry类就行了,简单易用。
牧牛童子 2010-12-22
  • 打赏
  • 举报
回复
另外可能还要用到RegCgreateKey() 函数。
牧牛童子 2010-12-22
  • 打赏
  • 举报
回复
给你个类似例子:
HKEY hKey;
AnsiString strKeyName = "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\";
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,strKeyName.c_str(),0,KEY_WRITE,&hKey) != ERROR_SUCCESS)
return FALSE;
……
char ip_v[100];int nIP;
RegSetValueEx(hKey, "IPAddress", 0, REG_MULTI_SZ, (unsigned char*)ip_v,nIP);
RegCloseKey(hKey);

13,825

社区成员

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

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