完整示例源码下载:http://yckxzjj.vip.sina.com/developer/SetAutoRun.rar节名[设置程序自动被执行]
问题描述:
如何通过注册表实现程序在启动时自动被执行?
解题思路:
通过注册表中HKEY_LOCAL_MACHIN\Software\Mircrosoft\Windows\CurrentVersion\Run子键描述Windows启动时自动执行的程序,它的键值为各可执行文件的路径。
实现步骤:
1.创建一个Application项目后,依次保存单元文件名为:UsetAutoRun.pas,工程文件名为:SetAutoRun.dpr,设置窗体名称为:SetAutoRunFrm。
 文件名称 描述
SetAutoRun.dpr 应用程序窗体
UsetAutoRun.pas 窗体源文件
 
2.在新建工程窗体中加入如下控件:
   
对象 名称 设定值
TLabel InfoLabel 可执行文件:
TButton SetAutoRunBtn 设置程序自动被执行
TEdit FilePathEdit 可执行文件文件路径
TPanel ExeFileAddPanel 
TSpeedButton ExeFileAddSpdBtn 添加可执行文件
TOpenDialog FilePathOpenDlg 
3.程序代码
unit USetAutoRun;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Registry, Buttons, ExtCtrls; //加入Registrytype
  TSetAutoRunFrm = class(TForm)
    SetAutoRunBtn: TButton;
    InfoLabel: TLabel;
    FilePathEdit: TEdit;
    ExeFileAddSpdBtn: TSpeedButton;
    FilePathOpenDlg: TOpenDialog;
    ExeFileAddPanel: TPanel;
    procedure SetAutoRunBtnClick(Sender: TObject);
    procedure ExeFileAddSpdBtnClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  SetAutoRunFrm: TSetAutoRunFrm;implementation{$R *.DFM}procedure TSetAutoRunFrm.SetAutoRunBtnClick(Sender: TObject);
var
  AutoRunReg : TRegistry;
begin
  AutoRunReg := TRegistry.Create;
  with AutoRunReg do
  try
  begin
    RootKey := HKEY_LOCAL_MACHINE;
    if OpenKey('Software\Microsoft\Windows\CurrentVersion\run',True) then
    begin
        WriteString(ExtractFileName(FilePathEdit.Text),FilePathEdit.Text);
        ShowMessage('操作成功');
    end
    else
        ShowMessage('操作失败');
    CloseKey;
  end;
  finally
    AutoRunReg.Free; //释放资源
  end;
end;procedure TSetAutoRunFrm.ExeFileAddSpdBtnClick(Sender: TObject);
begin
  if FilePathOpenDlg.Execute then
     FilePathEdit.Text := FilePathOpenDlg.FileName;
end;end.
4.窗体运行时界面。
 
注意:
在Uses中加入Resitry
技巧:
OpenKey函数中第二个参数(Boolean类型)为True时,打开子键,如该子键不存在则创建子键;为False时,则不创建子键。
提示:
Windows中主要包括以下根键值:
HKEY_CLASS_ROOT:包含文件扩展名和文件类型,其中包括了从Win.ini文件中引入的扩展名的数据,如我的电脑、控制面板等的类标识。此主键的数据适用于所有用户。
HKEY_CURRENT_USER:保存当前用户的配置信息,如控制面板选项。
HKEY_LOCAL_MACHINE:包含本机上所有软硬件的信息,此主键的数据适用于所有用户。
HKEY_USER:保存着所有登录到此机上的用户信息。包括通用设置(如应用程序事件)、特定用户设置(如桌面)。
HKEY_CURRENT_CONFIG:包含所有连接到此机上的硬件的配置数据,如打印机和显示器的配置数据。
HKEY_DYN_DATA:指向HKEY_LOCAL_MACHINE的一个分支,包括系统性能和即插即用的动态信息。
试一试:
读者可根据介绍进行相应地扩展应用。
分析:
Tregistry类中定义的常用方法:
CloseKey:    关闭一个键。
CreateKey:   创建一个新键。
DeleteKey:   删除一个已经存在的键。
Deletevalue:  删除键中的一个数值。
HasSubKeys: 测试一个键是否有子键。
KeyExists:   测试一个键是否存。
OpenKey:    打开一个键。
ReadBool:    读取一个键中某个具体数值,该数值为布尔类型的数据。
ReadInteger:  读取一个键中某个具体数值,该数值为整数类型的数据。
ReadString:   读取一个键中某个具体数值,该数值为字符串类型的数据。
WriteBool:    向一个键中写入某个具体数值,该数值为布尔类型的数据。
WriteInteger:  向一个键中写入某个具体数值,该数值为整数类型的数据。
WriteString:   向一个键中写入某个具体数值,该数值为字符串类型的数据。专家点评:
[待评]
相关问题:
[INI文件的应用]