为什么写不进注册表?(5分)

  • 主题发起人 zhangweizw
  • 开始时间
Z

zhangweizw

Unregistered / Unconfirmed
GUEST, unregistred user!
用程序修改注册表,很简单,为什么运行之后注册表没反应?
procedure TForm1.Button1Click(Sender: TObject);
var
Reg:Tregistry;
s:string;
begin
s:='pwsf/user';
reg:=tregistry.Create;
reg.RootKey:=hkey_users;
if reg.OpenKey(s,false) then
begin
reg.WriteString('',encrypt(edit1.Text));
end;
reg.CloseKey;
end;
 
改为if reg.OpenKey(s,true) then也不行
 
procedure WriteRegString(rootkey : String ; Key : String ; value : String );
var
Reg : TRegistry ;
Begin
Reg := TRegistry.Create ;
try
Reg.RootKey := HKEY_LOCAL_MACHINE ;
Reg.OpenKey(rootkey,true) ;
Reg.WriteString(key,value);
finally
Reg.Free ;
end;
End;
 
试试行不行!!
 
Reg.OpenKey(rootkey,true) ;

用Reg.RootKey := HKEY_LOCAL_MACHINE ;在非管理员身分下有问题,
用reg.RootKey:=hkey_users;应该没问题
 
我用断点跟踪了一下,发现if语句中的
reg.WriteString('',encrypt(edit1.Text));
根本没有执行!
怎么搞的?
 
if reg.OpenKey(s,false) then
begin
reg.WriteString('',encrypt(edit1.Text));
end;
如果reg.WriteString('',encrypt(edit1.Text));没有执行的话 说明 reg.OpenKey(s,false)
为false 你试一下我的
 
我往HKEY_CURRENT_USER下写就成功了
这是为什么?
 
对 你想要通过程序操作注册表 只能写到这里面的 特别是把一些程序基本信息写进去时
 
顶部