二、应用实例1
下面我们通过一个示例程序演示了对注册表的常见操作,包括打开主键、读取不同类型的键值、删除键值或主键等。“每次启动电脑自动运行”复选框则实现的作用类似 Win 95 的 Welcome.exe 程序的功能。 首先在窗体添加 Edit1 、 Label1 、 label 2 (用于显示运行次数)、 Button1 、 CheckBox1 ( Caption= “每次启动电脑自动运行”)等几个控件,然后添加以下源代码。生成可执行文件后,改名为 MyReg.EXE 拷贝到 C: 盘根目录下执行即可。
源代码:
//-------------------------------------------- #include <vcl.h> #pragma hdrstop #include -registry.hpp- // 包含头文件 #include -Unit1.h- //-------------------------------------------- #pragma package(smart_init) #pragma resource -*.dfm- TForm1 *Form1; TRegistry *MyReg=new TRegistry();// 建立实例 //-------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {} //-------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) {MyReg->RootKey=HKEY_CURRENT_USER; if((MyReg->OpenKey(-\\software\\MyReg-,false))==false) {MessageBox(NULL,- 感谢第一次使用本软件 !.-,- 欢迎 !-,IDOK); MyReg->CreateKey(-\\software\\MyReg-); MyReg->OpenKey(-\\software\\MyReg-,true); MyReg->WriteInteger(-Number-,0); MyReg->WriteString(-The String-,Edit1->Text); }// 检测有无注册表项 , 没有则建立 int num=MyReg->ReadInteger(-Number-); num++; MyReg->WriteInteger(-Number-,num);// 使用次数 +1 并写入注册表 Label2->Caption=IntToStr(num); Edit1->Text=MyReg->ReadString(-The String-); MyReg->CloseKey(); MyReg->RootKey=HKEY_LOCAL_MACHINE; MyReg->OpenKey(-\\software\\Microsoft\\windows\\CurrentVersion\\Run-,false); CheckBox1->Checked=MyReg->ValueExists(-AutoShow-); MyReg->CloseKey();// 根据是否自动运行设定 CheckBox 状态 } //-------------------------------------------- void __fastcall TForm1::Edit1Change(TObject *Sender) {MyReg->RootKey=HKEY_CURRENT_USER; MyReg->OpenKey(-\\software\\MyReg-,false); MyReg->WriteString(-The String-,Edit1->Text); MyReg->CloseKey();//Edit1 改变写入注册表 } //-------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) {MyReg->RootKey=HKEY_LOCAL_MACHINE; MyReg->OpenKey(-\\software\\Microsoft\\windows\\CurrentVersion\\Run-,false); if(CheckBox1->Checked) MyReg->WriteString(-AutoShow-,-c:\\MyReg.EXE-); else MyReg->DeleteValue(-AutoShow-); MyReg->CloseKey();// 如果 CheckBox 选中则自动运行 , 否则删除自动运行键值 delete MyReg; } //-------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender)// 单击 Button1 删除注册表项 {MyReg->RootKey=HKEY_LOCAL_MACHINE; MyReg->OpenKey(-\\software\\Microsoft\\windows\\CurrentVersion\\Run-,false); MyReg->DeleteValue(-AutoShow-); MyReg->CloseKey();//* 删除自动运行键值 MyReg->RootKey=HKEY_CURRENT_USER; MyReg->DeleteKey(-\\software\\MyReg-);// 删除注册表项 } |
|
|