CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

用delphi怎么样操作注册表?(为什么没人理我55555555~~~~~)

楼主ljtok(寂寞寒冰)2001-11-26 00:38:00 在 Delphi / VCL组件开发及应用 提问

谢谢大家帮帮我  
   
  我用tregistry的时候很奇怪的不能通过,不知道哪里的问题 问题点数:20、回复次数:4Top

1 楼DongXF(孔雀东南飞)回复于 2001-11-26 01:39:20 得分 10

给个例子你瞧瞧:  
      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就会了Top

2 楼ljtok(寂寞寒冰)回复于 2001-11-26 01:49:08 得分 0

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

3 楼w8u(晌马)回复于 2001-11-26 08:12:04 得分 10

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)  
      问博医药  
   
     
     
   
  --------------------------------------------------------------------------------  
  Top

4 楼ljtok(寂寞寒冰)回复于 2001-12-03 00:10:58 得分 0

1111Top

相关问题

  • delphi中操作注册表
  • 怎么用delphi操作注册表???
  • 如何用delphi操作注册表
  • 操作注册表?
  • 操作注册表
  • 注册表操作
  • 注册表操作
  • 请问如何在delphi中操作注册表??
  • delphi中如何进行这些(见正文)注册表操作?
  • 请问delphi怎样对注册表进行操作,谢谢了

关键词

  • win95
  • win98
  • registertemp
  • 键
  • 程序
  • tregistry
  • 注册表
  • strexefilename
  • 键hkey
  • strfileextension

得分解答快速导航

  • 帖主:ljtok
  • DongXF
  • w8u

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo