procedure TForm1.Button1Click(Sender: TObject);
var
  alist:TStringList;
  I:Integer;
  sversionname:string;
  sversion:string;
  unstall_string:string;
begin
       alist:=TStringList.Create;
       with TRegistry.Create do
       begin
         RootKey:=HKEY_LOCAL_MACHINE;
         if OpenKey('SYSTEM\CurrentControlSet\Services',False) then
         begin
           GetKeyNames(alist);
           CloseKey;
           for i:=0 to alist.Count-1 do
           begin
             if OpenKey('SYSTEM\CurrentControlSet\Services\'+alist[i],False) then
             begin                 if ValueExists('Description') then
                sversion:='描述:'+readstring('Description')
                else
                sversion:='没有描述';                 if ValueExists('DisplayName') then  =======================>>>>>这里报错,说类型不对
               sversionname:=Readstring('DisplayName')
               else
               sversionname:='没有名字';
                unstall_string:=unstall_string+alist[i]+' '+sversion+' '+sversionname+' ';
                CloseKey;
               end;
             end;
           end;
           Free
         end;
         alist.Free;
       //idudpclient1.Send('rm_show_unstall'+unstall_string);
       memo1.Lines.Add(unstall_string);
       unstall_string:='';
     end ;大家好,我在注册表中获取windows系统服务的名称,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
在子项下有两个字符串名称,一个是DisplayName,一个是Description,从注册表中看两者类型都是一摸一样的,但是我用readstring获取他们的值的时候,在获取DisplayName的时候就报错,说类型不对,但是获取Description就没有问题,甚至获取ImagePath都没有问题,请问大家这是怎么回事呢?如何才能正确获取到DisplayName的值?