读取注册表
uses Registry;procedure TForm1.XXxxxxx;
var 
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CLASSES_ROOT;
  reg.OpenKey('txtfile\shell\command', false);
  //读取
  ShowMessage(reg.ReadString(''));
  //写入
  reg.WriteString('', Application.ExeName + ' %1');
  reg.CloseKey;
  reg.Free;
end;
end;

解决方案 »

  1.   

    读磁盘序列号
    GetVolumeInformation(PChar(DriveID + ':\'), nil, 0, @VolumeSerialNumber,
      MaximumComponentLength, FileSystemFlags, nil, 0);
            
      

  2.   

    Unit HardDisk;
    INTERFACE
    FUNCTION  GetHardDiskNaam  : STRING;
    FUNCTION  GetHardDiskSerieNummer        : STRING;
    FUNCTION  GetHardDiskControlleNummer    : STRING;
    PROCEDURE GetHardDiskGegevens;
    CONST
      CodeerTabel : ARRAY[0..24] OF BYTE =
    (3,1,2,1,4,1,3,2,6,4,6,5,1,2,6,4,2,6,3,4,6,2,4,1,2);
    TYPE
      CharArray = ARRAY[0..24] OF CHAR;
    VAR
      HardDiskGegevens          : ARRAY[1..256] OF INTEGER;
      HardDiskNaam  : CharArray;
      SerieNummer  : CharArray;
      ControlleNummer          : CharArray;
      C_HardDiskNaam: STRING;
      C_HardDiskSerieNummer    : STRING;
      C_HardDiskControlleNummer : STRING;
      C_LicentieNaam: STRING;
    IMPLEMENTATION
    FUNCTION GetHardDiskNaam : STRING;
    VAR
      Teller : INTEGER;
      Lus    : INTEGER;
    BEGIN
        GetHardDiskNaam := '';
        Teller := 1;
        FOR Lus := 1 TO 18 DO
        BEGIN
          HardDiskNaam[Teller] := CHR( ( HardDiskGegevens[27+Lus] DIV 256 ));
          Inc(Teller);
          HardDiskNaam[Teller] := CHR( ( HardDiskGegevens[27+Lus] MOD 256 ));
          Inc(Teller);
        END;
        GetHardDiskNaam := HardDiskNaam;
    END;
    FUNCTION GetHardDiskSerieNummer : STRING;
    VAR
      Teller : INTEGER;
      Lus    : INTEGER;
    BEGIN
        GetHardDiskSerieNummer := '';
        Teller := 1;
        FOR Lus := 1 TO 8 DO
        BEGIN
          SerieNummer[Teller] := CHR( ( HardDiskGegevens[10+Lus] DIV 256 ));
          Inc(Teller);
          SerieNummer[Teller] := CHR( ( HardDiskGegevens[10+Lus] MOD 256 ));
          Inc(Teller);
        END;
        GetHardDiskSerieNummer := SerieNummer;
    END;
    FUNCTION GetHardDiskControlleNummer : STRING;
    VAR
      Teller : INTEGER;
      Lus    : INTEGER;
    BEGIN
        GetHardDiskControlleNummer := '';
        Teller := 1;
        FOR Lus := 1 TO 3 DO
        BEGIN
          ControlleNummer[Teller] := CHR( ( HardDiskGegevens[23+Lus] DIV 256 ));
          Inc(Teller);
          ControlleNummer[Teller] := CHR( ( HardDiskGegevens[23+Lus] MOD 256 ));
          Inc(Teller);
        END;
        GetHardDiskControlleNummer := ControlleNummer;
    END;
    PROCEDURE GetHardDiskGegevens;
    VAR
      Lus    : INTEGER;
    BEGIN
      WHILE ( Port[$1f7] <> $50) DO ;
      Port[$1F6] := $A0 ;
      Port[$1F7] := $EC ;
      WHILE ( Port[$1f7] <> $58 ) DO ;
      FOR Lus := 1 TO 256 DO
      BEGIN
        HardDiskGegevens[Lus] := Portw[$1F0] ;
      END;
    END;
    END.