我在每个盘的根目录下执行dir命令后,可以看到一个信息字段即“卷的序列号”通常为8位16进制数。请问在编程中如何获取这个号码,因为我想用他作为密钥加密信息。来保证信息只存在于指定的盘。顺便问一下,是否有仿造或修改此序列号的方法。多谢各位了。分数不够可令加。

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      vVolumeNameBuffer: array[0..255]of Char;
      vVolumeSerialNumber: DWORD;
      vMaximumComponentLength: DWORD;
      vFileSystemFlags: DWORD;
      vFileSystemNameBuffer: array[0..255]of Char;
    begin
      if GetVolumeInformation('C:\', vVolumeNameBuffer, SizeOf(vVolumeNameBuffer),
        @vVolumeSerialNumber, vMaximumComponentLength, vFileSystemFlags,
        vFileSystemNameBuffer, SizeOf(vFileSystemNameBuffer)) then
      begin
        Caption := IntToHex(vVolumeSerialNumber, 8);
      end;
    end;