Windows 通过序列号识别CD-ROM

Windows 通过序列号识别CD-ROM,windows,language-agnostic,serial-number,cd-rom,Windows,Language Agnostic,Serial Number,Cd Rom,我对CD识别感兴趣 我的问题: 是否有可以通过编程方式检索的序列号 编辑(已解决): function GetCDROMSerial(AVolName: Char ) : DWord; var Dummy1, Dummy2 : DWord; begin GetVolumeInformation( PChar( AVolName+':' ), nil, 0, @Result, Dummy1, Dummy2,

我对CD识别感兴趣

我的问题:

是否有可以通过编程方式检索的序列号

编辑(已解决):

  function GetCDROMSerial(AVolName: Char ) : DWord;
  var
   Dummy1, Dummy2 : DWord;
  begin
   GetVolumeInformation(
     PChar( AVolName+':' ),
     nil,
     0,
     @Result,
     Dummy1,
     Dummy2,
     nil,
     0
     );
  end;
  ShowMessage(Format('%X', [GetCDROMSerial('F')]));
  • 版本
  • 版本
  • 请在VB中尝试此代码

    Private Declare Function GetVolumeInformation Lib "Kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
    Private Sub Form_Load()
        Dim Serial As Long
        'Get the volume information
        GetVolumeInformation "d:\", vbNullString, 255, Serial, 0, 0, vbNullString, 255
    
        MsgBox Hex(Serial)
    End Sub 
    
    这应该作为您的概念证明。你可以根据你选择的语言来调整它

    从此处开始:

    Windows.GetVolumeInformation语法
    Delphi端口(略微改编自的帖子) GetCDROMSerial片段:

      function GetCDROMSerial(AVolName: Char ) : DWord;
      var
       Dummy1, Dummy2 : DWord;
      begin
       GetVolumeInformation(
         PChar( AVolName+':' ),
         nil,
         0,
         @Result,
         Dummy1,
         Dummy2,
         nil,
         0
         );
      end;
    
      ShowMessage(Format('%X', [GetCDROMSerial('F')]));
    
    用法示例:

      function GetCDROMSerial(AVolName: Char ) : DWord;
      var
       Dummy1, Dummy2 : DWord;
      begin
       GetVolumeInformation(
         PChar( AVolName+':' ),
         nil,
         0,
         @Result,
         Dummy1,
         Dummy2,
         nil,
         0
         );
      end;
    
      ShowMessage(Format('%X', [GetCDROMSerial('F')]));
    

    谢谢你的回答。我只是想确定检索到的
    序列
    是独立于操作系统的,是这样还是它只是由Windows计算的特定哈希?CD-ROM实际上有一个序列号。这是独立操作系统再次感谢您。我接受你的回答,我会尝试做一个Delphi端口,稍后再发布。我在Q中添加了一个标签。希望其他语言的实现(答案)会发布在这里。bigresource.com是一个自动生成的门口刮板网站,在显示广告时只会重定向你。如果可以,你应该发布一个指向“真实”内容的链接。这是我的Andrei答案的Delphi端口(用Delphi XE测试)。