小鸟问问题哈,帮帮忙啦

caogua 2008-11-18 09:45:04
关于注册表的问题哈:
在DELPHI中定义:
reg:Tregistry;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false);
1. reg.KeyExists(str),这是一个检查RUN文件夹下str文件夹吗?

2.RUN中的子文件夹XXX有什么用啊?XXX中的数据项与启动项有什么联系吗?
小弟没什么钱钱了,望各位大哥多包含....
...全文
75 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyk120 2008-11-20
  • 打赏
  • 举报
回复
1、这是检查STR这个键值是否存在,这个键值的作用是启动时运行你的程序
2、这是指你想开机自启动的程序的路径(目标位置)
火龙岛主 2008-11-20
  • 打赏
  • 举报
回复
关于注册表的问题哈:
在DELPHI中定义:
reg:Tregistry;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false);
1. reg.KeyExists(str),这是一个检查RUN文件夹下str文件夹吗?
检查是否存在str键值,一般是你在系统启动的时候要运行的程序的键值是否存在。
具体功能是定义的运行的程序是什么。

2.RUN中的子文件夹XXX有什么用啊?XXX中的数据项与启动项有什么联系吗?
小弟没什么钱钱了,望各位大哥多包含....
注册表的这个位置是用于系统启动时加载的应用程序的位置。
panrongzeng 2008-11-19
  • 打赏
  • 举报
回复
写注册表,运行run文件夹程序
Storm2008 2008-11-19
  • 打赏
  • 举报
回复
用Delphi操作Windows 95/NT注册表

  类似于Windows 3.x中的ini文件,Windows 95、Windows NT中的注册表记录了有
关Windows系统、应用软件运行时的初始化参数等。用户经常需要在程序中操作注册
表,以控制软件的启动及保存软件运行中的若干主要参数等。
  Windows注册表的结构
  运行Regedit,可以进入注册表编辑器。如下图。图1
  上图中左框表示注册表的主键;右框中的名称指键值名,数据指键值;状态栏中显
示了当前打开的完整的主键名称。可以看出,整个注册表以树的结构及规则来组织,键
值名和键值组成了该树的叶子。
  操作注册表实例
  Delphi 3.0中的registry.dcu文件定义注册表的数据结构,并提供了TRegIniFile
这个不可视的控件。在程序中可通过该控件来操作注册表。
下面的例子描述了新建(修改)、读取、删除Windows注册表中
的主键HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windo ws\Curre ntVersion\Run下
的键值名RemoteOperate和键值remoteControl.exe 。
  unit s_registry;
  interface
  uses
    Windows, Messages, SysUtils, Classes, Graphics, Contr ols, Forms,
Dial ogs, StdCtrls,registry;
  {注意:registry必须自己加上}
  type
  TForm1 = class(TForm)
  new: TButton;
  read: TButton;
  delete: TButton;
  procedure newClick(Sender: TObject);
  procedure readClick(Sender: TObject);
  procedure deleteClick(Sender: TObject);
  private
  { Private declarations }
  public
  { Public declarations }
  end;
  var
  Form1: TForm1;
  implementation
  {$R *.DFM}
  {新建(修改)注册表}
  procedure TForm1.newClick(Sender: TObject);
  var ini : TRegIniFile;
  begin
  ini := TRegIniFile.Create(‘');
  {创建TRegIniFile对象}
  ini.RootKey:=HKEY_LOCAL_MACHINE;
  {改变Rookey,缺省为HKEY_USERS}
  ini.WriteString(‘Software\Microsoft\Windows\CurrentVers ion\Run',{主键}
  ‘RemoteOperate', {键值名,若该名称与主键下的键值名相同,
则修改它的键值。否则,新建键值名及键值}
  ‘remoteControl.exe');  {键值}
    ini.Free;
  end;
  {读取键值}
  procedure TForm1.readClick(Sender: TObject);
  var ini  : TRegIniFile;
   RegStr: String;
  begin
   ini := TRegIniFile.Create(‘');
    ini.RootKey:=HKEY_LOCAL_MACHINE;
    RegStr:=ini.ReadString(‘Software\Microsoft\Windows\C urrentVersion\Ru n’,‘RemoteOperate’,‘');
  ini.Free;
  ShowMessage(RegStr);
  end;
  {删除键值名及键值}
  procedure TForm1.deleteClick(Sender: TObject);
  var ini  : TRegIniFile;
  begin
    ini := TRegIniFile.Create(‘');
    ini.RootKey:=HKEY_LOCAL_MACHINE;
    ini.DeleteKey(‘Software\Microsoft\Windows\CurrentVer sion\Run',‘Remo teOperate');
    ini.Free;
  end;
  end.
  上面的例子只描述了键值是字符串的情况。
用TRegIniFile的Rea dBool、ReadInteg er、WriteBool、WriteInteger方法
可对布尔型、整型的数据值进行操作。



仔细看看注释
Storm2008 2008-11-19
  • 打赏
  • 举报
回复
开机的时候会运行RUN后面的程序

-------------------------------------------
给你点基础的

注册表基本操作,简单加密
主题:注册表基本操作,简单加密
发信人: aaa234(我只只在乎你)
整理人: teleme(2001-06-04 15:44:11) 站内信件
32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息。
  一、创建和释放TRegistry对象
  1.创建TRegistry对象。为了操作注册表,要创建一个TRegistry对象:ARegistry := TRegistry.Create;
  2.释放TRegistry对象。对注册表操作结束后,应释放TRegistry对象所占内存:ARegistry.Destroy。
  二、指定屹作的键
  操作注册表时,首先应指定操作的主键:先给属性RootKey赋值以指定根键,然后用方法OpenKey来指定要操作的主键名。
  1.指定根键(RootKey)。
  根键是注册表的入口,也注册表信息的分类,其值可为:
  HKEY—CLASSES—ROOT:存储整个系统对象类信息,如ActiveX对象注册、文件关联等信息。
  HKEY—CURRENT—USER:存储当前用户的配置信息。为属性RootKey的默认值。
  HKEY—LOCAL—MACHINE:存储当前系统的软硬件配置信息。应用程序自己的信息可以存储在该根键下。
  HKEY—USERS:存储所有用户通用的配置信息。
  还可以是HKEY—CURRENT—CONFIG、HKEY—DYN—DATA。
  2.指定屹作的主键。
  Function OpenKey(const Key: string; CanCreate: Boolean): Boolean;
  Key:主键名,是键名全名中除去根键的部分,如Software\Borland\Delphi。
  CanCreate:在指定的主键名不存在时,是否允许创建该主键,True表示允许。
  返回值True表示操作成功。
  3.关闭当前主键。
  在读取或存储信息之后,应及时将关闭当前主键:procedure CloseKey。
  三、从注册表中读取信息
  Read系列方法从注册表读取指定的信息(字符串、二进制和十六进制),并转换为指定的类型。
  1.Read系列方法。
  function ReadString(const Name: string): string;
  读取一个字符串值,Name为字符串名称。
  function ReadInteger(const Name: string): Integer;
  读取一个整数值,Name为整数名称。
  function ReadBinaryData(const Name: string; var Buffer; BufSize: Integer):Integer;
  读取二进制值,Name为二进制值名称,Buffer为接收缓冲区,BufSize为缓冲区大小,返回为实际读取的字节数。
  其它方法还有:ReadBool、ReadCurrency、ReadDate、ReadDateTime、ReadFloat、ReadTime。
  2.读取信息一例(显示Windows的版本)。
  在HKEY—LOCAL—MACHINE\Software\Microsoft\Windows\CurrentVersion下,有三个字符串值Version、VersionNumber和SubVersionNumber,用于记录当前Windows的版本号。
  {请在Uses中包含Registry单元}
  procedure TForm1.Button1Click(Sender:TObject);
  var
   ARegistry : TRegistry;
  begin
   ARegistry := TRegistry.Create;
  //建立一个TRegistry实例
   with ARegistry do
   begin
   RootKey := HKEY—LOCAL—MACHINE;//指定根键为HKEY—LOCAL—MACHINE
   //打开主键Software\Microsoft\Windows\CurrentVersion
   if OpenKey( 'Software\Microsoft\Windows\CurrentVersion' false ) then
   begin
   memo1.lines.add('Windows版本:'+ ReadString('Version'));
   memo1.lines.add('Windows版本号:' + ReadString('VersionNumber'));
   memo1.lines.add('Windows子版本号:' + ReadString('SubVersionNumber'));
   end;
   CloseKey;//关闭主键
   Destroy;//释放内存
   end;
  end;
  四、向注册表中写入信息
  Write系列方法将信息转化为指定的类型,并写入注册表。
  1.Write系列方法。
  procedure WriteString(const Name Value: string);
  写入一个字符串值,Name为字符串的名称,Value为字符串值。
  procedure WriteInteger(const Name: string; Value: Integer);
  写入一个整数值。
  procedure WriteBinaryData(const Name: string; var Buffer; BufSize: Integer);
  写入二进制值,Name为二进制值的名称,Buffer为包含二进制值的缓冲区,BufSize为缓冲区大小。
  其它方法还有:WriteBool、WriteCurrency、WriteDate、WriteDateTime、WriteFloat、WriteTime。
  2.写入信息一例。
  下面程序使Delphi随Windows启动而自动运行。
  var
   ARegistry : TRegistry;
  begin
   ARegistry := TRegistry.Create;
  //建立一个TRegistry实例
   with ARegistry do
   begin
   RootKey:=HKEY—LOCAL—MACHINE;
   if OpenKey('Software\Microsoft\Windows\CurrentVersion\Run' True) then
   WriteString('delphi' 'C:\Program Files\borland\delphi3\bin\delphi32.exe');
   CloseKey;
   Destroy;
   end;
  end;
  五、键值维护
  除了在注册表中读取、存储外,程序可能还需要增加主键、删除主键、主键改名、数据值改名等。
  1.创建新主键:function CreateKey(const Key: string): Boolean。
  Key即为主键名,返回值True表示操作成功。
  2.删除主键:function DeleteKey(const Key: string): Boolean。
  Key即为主键名,返回值True表示操作成功。
  3.复制或移动主键:procedure MoveKey(const OldName NewName: string; Delete: Boolean)。
  OldName、NewName分别表示源主键名和目标主键名;Delete表示是否删除源主键,True表示删除,False表示保留。
  复制或移动一个主键将复制或移动该子键下的所有数据值和子键内容。
  4.判断指定主键是否存在,其下是否有主键,并获取主键名称。
  KeyExists用于判断指定主键是否存在:
  function KeyExists(const Key: string): Boolean;//返回值为True表示主键存在。
  HasSubKeys用于判断指定主键下是否有子键:function HasSubKeys: Boolean;
  返回值为True表示主键下有子键。
  GetKeyNames用于获取子键名称:procedure GetKeyNames(Strings: TStrings);
  Strings用于返回当前主键下各子键的名称。
  5.获取主键下的数据值名称:procedure GetValueNames(Strings: TStrings)。
  Strings用于返回当前主键下各数值名称。
  如要获取当前系统中的拨号连接名称,可利用获取主键HKEY—USERS
  \.DEFAULT\RemoteAccess\Addresses下的数值名称的方法来进行。
  6.判断数值名称存在、数值名称改名。
  ValueExists用于判断数值名称是否存在:
  function ValueExists(const Name: string): Boolean;
  返回值为True表示数值名称存在。
  RenameValue用于数值名称改名:
  procedure RenameValue(const OldName NewName: string);
  以上是注册表常用操作所对应的TRegistry的方法和属性,其它方法和属性请参见Delphi联机帮助文件。
 以上程序在PWIN 98+Delphi 3.0下调试通过。

 
用注册表对Delphi程序进行加密
  本加密方法分三部分:
  1. 根据对注册表的搜索结果判定设置对话框的内容。
  2. 若初次使用,则设新密码;若是已经设置密码,则进行验证。
  3. 一个密码变换小程序(比原来的复杂得多)。当然,如果需要修改密码的功能,只要将设置密码部分改动一下即可。
  一、程序启动时,通过搜索注册表,判断是否已有密码,来确定窗口的显示内容。不过事先应有以下的声明然后才能使用:
  在user中加入TRegistry,在var声明中加入以下几个窗体变量:
   TheReg: TRegistry;
   KeyName ValueStr tempStr:String;
  procedure TfrmPass.FormShow(Sender: TObject);
  begin
   TheReg := TRegistry.Create;
   try TheReg.RootKey := HKEY—LOCAL—MACHINE;
  KeyName := 'SOFTWARE\Mypassword';
  //有该键则打开,没有则创建
  if TheReg.OpenKey(KeyName True) then begin
  tempStr:=ExtractFileName(Application.ExeName); //读取密码
   ValueStr:=TheReg.ReadString(tempStr);
   //密码不为空则修改窗体为验证密码
   if ValueStr<>'' then begin
   edit2.Visible:=false; frmPass.Caption:='验证密码';
   edit1.SetFocus; OK.Caption:='确定'; end
  //密码为空则修改窗体为设置密码对话框
  else begin
  showmessage('第一次使用请设置密码!');
   edit2.Visible:=true; frmPass.Caption:='请设置新密码';
   edit1.SetFocus; OK.Caption:='设置';
   end; TheReg.CloseKey; end;
  finally TheReg.Free; end; end;
  二、按钮的响应代码:包括新设密码和验证密码。
  procedure TfrmPass.OKClick(Sender: TObject);
  begin
   //根据Edit2的显示与否判断已有密码进行验证
   if edit2.Visible=false then begin
  if pass(edit1.text)=ValueStr then begin
   showmessage('密码正确!'); end
  else begin
   showmessage('密码不正确!无权操作!');
   halt; end; end //无密码设置新密码
   else begin
  if edit1.text=edit2.text then begin
   TheReg := TRegistry.Create;
   TheReg.RootKey := HKEY—LOCAL—MACHINE;
   KeyName := 'SOFTWARE\Mypassword';
   if TheReg.OpenKey(KeyName True) then
   TheReg.WriteString(tempStr pass(edit1.text));
   TheReg.CloseKey; end
  else begin
   showmessage('再次键入的密码不一致请重输!');
   edit1.text:=''; edit2.text:='';
   edit1.SetFocus; end; //进行下一步操作...
   end; end;
  三、密码变换程序:注意要预先定义。
  这个变换小程序在笔者看来还不算很复杂,只进行了两次变换,不过,想要破译也是得费点劲。读者还可以采用其他的数学函数进行更为复杂的变换。
  function pass(pstr:string):string;
  var str str1:string;
  i j:integer;
  begin
   str:=pstr;
   for i:=1 to length(str) do begin
  //进行第一次变换
   j:=(i*i*i mod (i+20))+(i*i mod (i+10))+i*2+1;
   str1:=str1+chr(ord(str[i])+j); //第二次变换
   j:=(i*i*i mod (i+10))+(i*i mod (i+20))+i*2+1;
   str1:=str1+chr(ord(str[i])+j); end;
   pass:=str1;
  end; ,




16,742

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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