var
    registerTemp : TRegistry;
    
begin
    registerTemp := TRegistry.Create;
    with registerTemp do
    begin
      rootkey:=HKEY_CURRENT_USER;
      if OpenKey('Software\MyExe',True) then
          deletekey('Nodriver');
          closekey;
    end;
    registertemp.free;
end;
运行程序以后却删除不了相应的键值!郁闷,请大虾指点迷津,哪里有错?
还有一个问题,如果想读写、删除一个主键下所有的键值应该怎么做?前提是不知道该主键下有几个键值,键值名称也不知道!谢谢各位!

解决方案 »

  1.   

    var
        registerTemp : TRegistry;
        
    begin
        registerTemp := TRegistry.Create;
        with registerTemp do
        begin
          rootkey:=HKEY_CURRENT_USER;
          if OpenKey('Software\MyExe',False) then
              deletekey('Nodriver');
        end;
        registertemp.free;
    end;
      

  2.   

    老大,deleteKey是删除一个主键,要删除一个主键里的值,用deleteValue
    var
        registerTemp : TRegistry;
    begin
        registerTemp := TRegistry.Create;
        with registerTemp do
        begin
          rootkey:=HKEY_CURRENT_USER;      if OpenKey('\Software\MyExe',false) then
             if  deletevalue('Nodriver') then
              begin
              showmessage('success!');
              closekey;
              end;
        end;
        registertemp.free;
    end;
      

  3.   

    对,删除值应该用deletevalue函数
      

  4.   

    第二个问题:你先用GetValueNames把主键中的所有键值名保存到一个TstringList中,然后用一个循环一个个删除即是。具体代码我就不写了