经测试,在我的WIn7上,通过。这是你的Win7系统的的注册表中,相应的键上无“securitylevel”值,读取不了。打开注册表检查一下,写入一个值,应该可以打开了。

解决方案 »

  1.   

    str:=reg.readString('securitylevel');
      

  2.   

    lyhoo163,你的win7是不是64位?
      

  3.   

    1、WIN7 32位机上,能读取,值为0;2、WIN 64位上,起初不能读取,通过检查注册表有此键,不能读取。
    通过下载代码,写入一个0值,就可以读取了。
    procedure TForm1.Button2Click(Sender: TObject);
    var Reg:TRegistry;
    begin
      reg:=Tregistry.create(KEY_ALL_ACCESS);
      reg.rootkey:=hkey_local_machine;
      try
        reg.openkey('Software\Microsoft\Windows NT\CurrentVersion\Setup\RecoveryConsole\',True);
        Reg.WriteInteger('securitylevel',0);
      finally
        Reg.CloseKey;
        Reg.Free;
      end;
    end;
    3、建议你,在win7 64位上:
    (1)通过RegEdit打开注册表,记下该键值,权限等(我未记,就不能比较了)
    (2)再执行我的代码;
    (3)查看前后比较,有何变化。就是造成此错误的原因吧。检查结果请报告一下。百万富翁共享吗!