给个例子你瞧瞧:
  with TRegistry.Create do begin
    RootKey := HKEY_LOCAL_MACHINE;
    OpenKey('SoftWare\Microsoft\Windows\CurrentVersion\Run', True);
    if not ValueExists('LoadPrg') then begin
      WriteString('LoadPrg', ExePath + 'LoadPrg.exe 1');
    end;
    CloseKey;
    Free;
  end;
其实好好看Help就会了

解决方案 »

  1.   

    谢谢你,可是我不大会看help。能不能教教我
      

  2.   

    Delphi 中 注 册 表 构 件TRegistry 的 应 用 
    王 发 军 
    ---- 在Delphi3.0 及 以 上 版 本 中, 提 供 了 一 个 构 件TRegistry。 在 程 序 中 可 以 利 用 它 来 实 现 对WIN95/98/NT 注 册 表 的 操 作, 可 以 很 方 便 地 在 注 册 表 中 增 加、 修 改 和 删 除 键 值。 这 样 可 以 在 程 序 中 完 成 一 些 特 殊 的 功 能。 ---- TRegistry 常 用 的 属 性 和 方 法 有( 具 体 作 用 和 用 法 请 参 考Delphi 帮 助):  RootKey、CreateKey、OpenKey、
     CloseKey、DeleteKey、ReadXXXX、WriteXXXX
     (XXXX表示数据类型如String、Integer等)---- 我 们 用 到 的 属 性 和 方 法 有:  RootKey:注册表的根键名( 如HKEY_LOCAL_MACHINE等)
     OpenKey( KeyName:string; CanCreate:boolean ):---- 使 当 前 键 为KeyName,CanCreate 表 示 当 指 定 的 键 不 存 在 时 是 否 创 建,True 表 示 创 建  SetKey( KeyName,KeyValue : string ):
     使键KeyName的值为KeyValue---- 应 用 之 一: 让 自 己 的 程 序 随WIN95/98/NT 的 启 动 而 运 行 ---- 当 然, 你 可 以 在 " 启 动 " 程 序 组 中 加 入 程 序 的 快 捷 方 式, 但 这 样 做 好 象 不 大 明 智, 因 为 大 多 数 程 序 在 安 装 时 不 会 这 样 做, 而 是 在 通 过 在 注 册 表 增 加 键 值, 让WIN95/98/NT 在 启 动 时 运 行 自 己 的 程 序。 如 果 打 开 注 册 表, 找 到HKEY_LOCAL_MACHINE \Software \Microsoft \Windows \CurrentVersion \Run, 就 会 发 现 这 个 秘 密 了, 原 来 许 多 自 动 运 行 的 程 序 都 在 这 里。 你 也 可 以 在 这 里 增 加 一 个 键, 让 你 的 程 序 也 随 着 WIN95/98/NT 的 启 动 而 自 己 运 行, 成 为WINDOWS 下 的TSR 程 序。 实 现 方 法 如 下: ---- 首 先, 在Uses 中 加 上Registry 单 元 ---- 然 后, 写 下 面 代 码。 {将程序strExeFileName置为自动启动 }
    function StartUpMyProgram
    ( strPrompt,strExeFileName : string ) : boolean;
    var
     registerTemp : TRegistry;
    begin
     registerTemp := TRegistry.Create;
     //建立一个Registry实例
     with registerTemp do
        begin
        RootKey:=HKEY_LOCAL_MACHINE;
        //设置根键值为HKEY_LOCAL_MACHINE
        //找到Software\Microsoft\Windows\CurrentVersion\Run
        if OpenKey('Software\Microsoft\Windows
        \CurrentVersion\Run',True) then
        //写入自己程序的快捷方式信息
         begin
              WriteString( strPrompt, strExeFileName );
              result := true;
           end
          else result := false;
        //善后处理
        CloseKey;
        Free;
        end;
    end;{调用StartUpMyProgram,
    使Delphi随WINDOWS启动而自动运行 }
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       memo1.lines.add('开始');
       if StartUpMyProgram('delphi','C:\Program 
       Files\borland\delphi3\bin\delphi32.exe') then
        memo1.lines.add('成功')
       else
        memo1.lines.add('失败')
    end;---- 应 用 之 二: 实 现 文 件 关 联 ---- 当MS WORD 安 装 在 你 的 系 统 中 时, 它 会 把.DOC 文 件 与 自 己 关 联, 当 你 双 击 一 个DOC 文 件, 就 会 启 动MS WORD, 打 开 你 指 定 的DOC 文 件。 你 也 可 以 把 一 个 文 件 类 型 与 一 个 程 序 关 联 起 来, 其 秘 密 还 是 在 注 册 表 中。 如 果 打 开 注 册 表, 找 到HKEY_CLASSES_ROOT, 就 会 发 现 这 里 已 经 有 很 多 文 件 类 型。 ---- 你 也 可 以 在 这 里 增 加 一 个 键, 建 立 自 己 的 文 件 关 联。 ---- 建 立 文 件 关 联, 一 般 应 有 两 个 步 骤: ---- ( 1) 根 据 文 件 类 型 的 扩 展 名, 指 定 对 应 的 键 名( 如doc 文 件 对 应 的 键 为doc_auto_file) ---- 该 键 及 其 子 键 的 值, 将 定 义 该 类 型 的 文 件 的 类 型 说 明 和 操 作( 如 打 开、 编 辑) 说 明 ---- ( 2) 在 指 定 的 键 名 下, 建 立 子 键, 指 明 文 件 类 型 说 明 和 操 作 对 应 的 程 序 信 息 ---- 例 如, 我 们 可 以 为.DBF 文 件 建 立 文 件 关 联, 其 文 件 类 型 说 明 为 "xBase 数 据 表 ", 使 其 打 开(Open) 文 件 的 操 作 对 应 程 序C:\Program Files\Borland\DBD\DBD32.EXE。 首 先, 应 在 注 册 表 的 根 键HKEY_CLASSES_ROOT 下 建 立 一 个 键, 键 名 为.DBF, 默 认 值 为DBF_Auto_File, 表 示DBF 类 型 文 件 的 关 联 操 作 信 息 记 录 在 键HKEY_CLASSES_ROOT\DBF_Auto_File 下; 然 后, 建 立 键HKEY_CLASSES_ROOT\DBF_Auto_File, 并 设 其 默 认 值 为 "xBase 数 据 表 ", 表 示 文 件 类 型 说 明; 再 建 立 键 HKEY_CLASSES_ROOT\DBF_Auto_File\Shell\open\command, 设 置 其 默 认 值 为 C:\Program Files\Borland\DBD\DBD32.EXE  %1( 其 中 "%1 " 为 命 令 行 参 数), 表 示 打 开 操 作 对 应 的 程 序 信 息。 ---- 具 体 实 现 如 下: 同 样, 在Uses 中 加 上Registry 单 元,   然 后, 写 下 面 代 码。 {将文件类型strFileExtension与程序
    strExeFileName相关联,strDiscription为文件类型说明 }
    function AssignToProgram(strFileExtension,
    strDiscription,strExeFileName : string ) : boolean;
    var
     registerTemp : TRegistry;
    begin
     registerTemp := TRegistry.Create;
     //建立一个Registry实例
     with registerTemp do
        begin
        RootKey:=HKEY_CLASSES_ROOT;
        //设置根键值为HKEY_CLASSES_ROOT      //根据文件类型的扩展名,创建或打开对应的键名
          .FileExt,如DBF对应'.DBF'
          if OpenKey( '.' + strFileExtension, true ) then
            begin
              result := false;
              exit;
            end;
      //设置键.FileExt默认值为FileExt_Auto_File,
        如'.DBF'对应'DBF_Auto_File'
          WriteString('',strFileExtension + '_Auto_File');
          CloseKey;    //写入自己程序的信息
          //根据文件类型的扩展名,创建或打开对应的键名
          FileExt_Auto_File
      //'.DBF'对应'DBF_Auto_File'
        if OpenKey(strFileExtension + '_Auto_File', true ) then
            begin
              result := false;
              exit;
            end;
      //设置默认值文件类型说明,如DBF可对应'xBase数据表'
          WriteString('',strDiscription);
          CloseKey;   //创建或打开键名FileExt_Auto_File
        \Shell\open\command,该键为表示操作为'打开'
      //'.DBF'对应'DBF_Auto_File\shell\open\command'
        if OpenKey(strFileExtension + '_Auto_File
        \shell\open\command', true ) then
            begin
              result := false;
              exit;
            end;
      //设置该键的默认值为打开操作对应的程序信息
      //如DBF可对应'C:\Program Files\Borland\DBD\DBD32.EXE'
          WriteString('',strExeFileName + ' %1');
        CloseKey;    Free;
        end;
    end;{调用AssignToProgram,使DBF文件与DBD32.EXE关联 }
    procedure TForm1.Button3Click(Sender: TObject);
    begin
       memo1.lines.add('开始');
       if AssignToProgram('DBF','xBase数据表'
       ,'C:\Program Files\borland\dbd\dbd32.exe') then
        memo1.lines.add('成功')
       else
        memo1.lines.add('失败')
    end;---- 应 用 之 三: 检 测Win95/98/NT 系 统 中 是 否 安 装 了Borland Database Engine ---- 当 你 的 应 用 程 序 是 一 个 基 于BDE 的 数 据 库 应 用 程 序 时, 如 果 运 行 在 一 个 没 有 安 装BDE 的Win95/98/NT 中, 会 出 现 让 用 户 迷 惑 不 解 的 错 误。 你 可 能 需 要 在 程 序 正 常 运 行 之 前, 检 查 系 统 中 是 否 安 装 了BDE。 由 于 BDE 安 装 后 会 在 注 册 表 进 行 注 册, 你 可 以 通 过 查 询 注 册 表 来 确 定 系 统 中 是 否 安 装 了BDE, 然 后 决 定 下 一 步 采 取 什 么 行 动。BDE 在 注 册 表 中 的 位 置 为:HKEY_LOCAL_MACHINE\Software\Borland\Database Engine, 该 键 存 在 说 明BDE 已 经 安 装。 ---- 具 体 的 例 子 如 下。 ---- 同 样, 在Uses 中 加 上Registry 单 元 ---- 然 后, 写 下 面 代 码。 {检测系统中是否安装了BDE }
    function IsBDEInstalled : boolean;
    var
     registerTemp : TRegistry;
    begin
     registerTemp := TRegistry.Create;
     //建立一个Registry实例
     with registerTemp do
        begin
        RootKey:=HKEY_LOCAL_MACHINE;
        //设置根键值为HKEY_LOCAL_MACHINE
        //查询Software\Borland\Database Engine
        result := OpenKey('Software\Borland
          \Database Engine',false);    //善后处理
        CloseKey;
        Free;
        end;
    end;{调用IsBDEInstalled,检测系统中是否安装了BDE }
    procedure TForm1.Button4Click(Sender: TObject);
    begin
       memo1.lines.add('开始');
       if IsBDEInstalled then
        memo1.lines.add('已安装了BDE')
       else
        memo1.lines.add('未安装BDE')
    end;---- 应 用 之 四: 在 桌 面 建 立 程 序 的 快 捷 方 式 ---- 当 你 的WIN95/98/NT 桌 面 上 整 齐 地 排 列 着 各 种 程 序 的 快 捷 方 式 时, 也 许 你 会 体 会 到 快 捷 方 式 的 方 便。 你 也 可 将 自 己 设 计 的 程 序 的 快 捷 方 式 放 在 别 人 的 桌 面 上。 ---- 桌 面 上 的 一 个 快 捷 方 式, 对 应Windows 目 录 下Destop 子 目 录 中 的 一 个ShellLink 文 件(.LNK), 你 只 要 在 这 个 目 录 下 增 加 一 个.LNK 文 件 就 可 以 了。 ---- 我 们 的 任 务, 主 要 是 利 用TRegistry 从 注 册 表 中 获 取Desktop 的 实 际 路 径, 默 认 为Windows 目 录 下 的Desktop 子 目 录, 如C:\PWIN98\Desktop。 在 注 册 表 中Desktop 的 实 际 路 径 对 应 的 键 为HKEY_CURRENT_USER \Software \MicroSoft \Windows \CurrentVersion \Explorer \Shell Folders \Desktop。 ---- 同 样, 在Uses 中 加 上Registry 单 元 ---- 然 后, 写 下 面 代 码。 {为程序strExeFileName在桌面建立快捷方式,
    运行参数为strParameters }
    function CreateShortcutOnDesktop
    ( strExeFileName, strParameters : string ) : boolean;
    var
     registerTemp : TRegistry;
     strDesktopDirectory : widestring;
     shelllinkTemp : IShellLink;
     persistfileTemp : IPersistFile;
    begin
     registerTemp := TRegistry.Create;
     //建立一个Registry实例
     with registerTemp do
        begin
        RootKey:=HKEY_CURRENT_USER;
        //设置根键值为HKEY_CURRENT_USER
        //找到Software\MicroSoft\Windows    CurrentVersion\Explorer\Shell Folders
        if not OpenKey('Software\MicroSoft\Windows    CurrentVersion\Explorer\Shell Folders',True) then
        //写入自己程序的信息
            begin
              result := false;
              exit;
            end;
      //读取项目Desktop的值,即Desktop的实际路径
          strDesktopDirectory := ReadString('Desktop');    //善后处理
        CloseKey;
        Free;
        end; //设置快捷方式的参数
     shelllinkTemp := IShellLink( CreateComObject(CLSID_ShellLink));
     with shelllinkTemp do
    begin
       SetPath( PChar( strExeFileName ) );
         //设置程序文件全名
       SetArguments( PChar( strParameters) );
         //设置程序的命令行参数
       //设置程序的工作目录
       SetWorkingDirectory( Pchar
        ( ExtractFilePath( strExeFileName ) ) );
    end; //构造快捷方式的文件名(.LNK)
     strDesktopDirectory := strDesktopDirectory + '\' +
            ExtractFileName( strExeFileName );
     strDesktopDirectory := copy( strDesktopDirectory,
     1, length( strDesktopDirectory ) -
                    length( ExtractFileExt( strExeFileName ) ) )
                 + '.LNK';
     //保存快捷方式的文件
     persistfileTemp := shelllinkTemp as IPersistFile;
     if S_OK = persistfileTemp.Save( PWChar
     ( strDesktopDirectory ) , false ) then
       result := true //保存成功,返回True
     else result := false;
    end;{调用CreateShortcutOnDesktop,为Delphi在桌面上建立快捷方式 }
    procedure TForm1.Button2Click(Sender: TObject);
    begin
       memo1.lines.add('开始');
       if CreateShortcutOnDesktop('C:\Program 
       Files\borland\delphi3\bin\delphi32.exe','%1') then
        memo1.lines.add('成功')
       else
        memo1.lines.add('失败')
    end;---- 上 面 几 个 应 用 只 是TRegistry 一 些 简 单 的 应 用, 有 了 这 些 知 识, 你 就 可 以 根 据 自 己 的 需 要 来 定 制 和 改 善Winodws 系 统 了。 ---- 以 上 程 序 在PWin98+Delphi3.0 下 调 试 和 通 过。 
       免 费 订 阅  
    实用技巧分类
     
    Office应用 
    CAD 
    C、C++ 
    数据库应用 
    Delphi  
    Internet应用 
    Java 
    Notes应用 
    操作系统应用 
    PowerBuilder 
    VB 
    Visual Foxpro 
    其他类 
    上周 排行榜 
    如 何 投 稿 ?  在日常的工作生活中,我们对计算机软硬件技术的应用开发肯定有许多的心得体会,拿来和众人分享:让别人得到他们想要的,使自己找到苦苦寻觅的;小的点点滴滴,大的工程系统,这里都需要。投稿 的关键在“技巧”二字,知他人所不知,这样的稿件本栏最最欢迎! 大家公认的 好文章自然会有好的奖励。希望每个人在这里都有所收获... 
      中国惠普
      3Com中国
      Motorola中国
      CA中国
      Cabletron
      Sony在中国
      西门子WinCC
      爱普生中国
      中国建设银行
      德州仪器(TI)
      问博医药 
     --------------------------------------------------------------------------------