一个注册表的问题。急,急,急!!!可我只有30分了。(30分)

子弹

Unregistered / Unconfirmed
GUEST, unregistred user!
请帮我看看下面的代码哪儿错了:
procedure TfmDatabaseSet.SetDatabase;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_USERS;
Reg.OpenKey('SOFTWARE/HS/DatabaseSet/DatabaseKind',true);
Reg.OpenKey('SOFTWARE/HS/DatabaseSet/ServerName',true);
Reg.OpenKey('SOFTWARE/HS/DatabaseSet/DatabaseName',true);
Reg.WriteString('DatabaseKind',Combobox1.text);
Reg.WriteString('ServerName',Edit4.text);
Reg.WriteString('DatabaseName',Edit5.text);
finally
Reg.Free;
end;
end;
提示写入注册表失败!
我希望能够创建一个SOFTWARE/HS/DatabaseSet的目录,在里面
写一些数据,要怎样写才可以。
 
创建了'SOFTWARE/HS/DatabaseSet/DatabaseKind'没有,先要创建在写啊。。。
 
是不是键的名字和目录的名字重复
 
原来的注册表里没有HS/DatabaseSet/的。我希望通过上面的代码能够创建。我
希望调用OpenKey的同时就能创建它,然后再WriteString,写入。这样错在哪里?
 
你用的是windows2000吗?我想你可能创建了'SOFTWARE/HS/DatabaseSet/DatabaseKind'
这个subKey失败了,我在windows2000中在HKEY_USERS下subKey值为
.Default/SOFTWARE/HS/DatabaseSet/DatabaseKind就可以成功写入
 
对了,我在HKEY_USERS下创建任何subkey失败,但在HEKY_USERS/.Default下就没问题
我想你可能也是这种原因
 
最好不要创建在那个下面
你可以创建在HKEY_CURRENT_USER或者HKEY_LOCAL_MACHINE下面
 
代码:
procedure TfmDatabaseSet.SetDatabase;
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_USERS;
[red]    if not Reg.KeyExists('SOFTWARE/HS/DatabaseSet/DatabaseKind') then
       Reg.CreateKey('SOFTWARE/HS/DatabaseSet/DatabaseKind');[/red]
    Reg.OpenKey('SOFTWARE/HS/DatabaseSet/DatabaseKind',true);
    Reg.OpenKey('SOFTWARE/HS/DatabaseSet/ServerName',true);
    Reg.OpenKey('SOFTWARE/HS/DatabaseSet/DatabaseName',true);
    Reg.WriteString('DatabaseKind',Combobox1.text);
    Reg.WriteString('ServerName',Edit4.text);
    Reg.WriteString('DatabaseName',Edit5.text);
  finally
    Reg.Free;
  end;
end;
 
顶部