Solved

Read CD Serial Number by code

Posted on 2002-06-26
9
182 Views
Last Modified: 2010-04-04
Dear friends,

you can see a serial number( I guess it is the Serial Number) at the face of a CD when you buy a Empty CD ( for write ). is it realy the S/N ? if yes, is there any way to read it by code ? I used GetVolumeInformation API function. but it got me the Volume S/N which is not my need. I need It for CD copy Protection.

best regards
Hamed
0
Comment
Question by:h_mohsenian
  • 3
  • 3
  • 2
  • +1
9 Comments
 
LVL 8

Accepted Solution

by:
Cesario earned 300 total points
ID: 7110131
Hi Hamed,

you can try this code :

The cd may or may not have a serial number and/or Universal Product
Code embedded in the cd. The MCI Windows extension does provide this
functionality through the MCI_INFO_MEDIA_IDENTITY command. This
command will return a unique ID string consisting of 16 hexadecimal
digits.

Example:

uses MMSystem, MPlayer;

procedure TForm1.Button1Click(Sender: TObject);
var
  mp : TMediaPlayer;
  msp : TMCI_INFO_PARMS;
  MediaString : array[0..255] of char;
  ret : longint;
begin
  mp := TMediaPlayer.Create(nil);
  mp.Visible := false;
  mp.Parent := Application.MainForm;
  mp.Shareable := true;
  mp.DeviceType := dtCDAudio;
  mp.FileName := 'D:';
  mp.Open;
  Application.ProcessMessages;
  FillChar(MediaString, sizeof(MediaString), #0);
  FillChar(msp, sizeof(msp), #0);
  msp.lpstrReturn := @MediaString;
  msp.dwRetSize := 255;
  ret := mciSendCommand(Mp.DeviceId,
                        MCI_INFO,
                        MCI_INFO_MEDIA_IDENTITY,
                        longint(@msp));
  if Ret <> 0 then begin
   MciGetErrorString(ret, @MediaString, sizeof(MediaString));
   Memo1.Lines.Add(StrPas(MediaString));
  end else
    Memo1.Lines.Add(StrPas(MediaString));
  mp.Close;
  Application.ProcessMessages;
  mp.free;
end;

I wish you good luck

Cesario
0
 
LVL 12

Expert Comment

by:Lee_Nover
ID: 7110153
you can't really use that S/N as cd copy protection
the thing is everytime you write to a CD it changes !!
so you might think of another protection

a good protection utility is ProActivate from TurboPower
http://www.turbopower.com/products/proactivate/
0
 
LVL 3

Expert Comment

by:lopem
ID: 7111597
listening...
0
 
LVL 3

Expert Comment

by:lopem
ID: 7111600
hi there!

what happens  when you copy a complete CD. Is this a bit to bit perfect copy? or there is a way to find out if the CD is a copy or an original?

best regards
Manuel Lopez (lopem)
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 1

Author Comment

by:h_mohsenian
ID: 7114137
thanks for all,

1.Cesario:
I have a problem with your code, you have this line :

 mp.FileName := 'D:';

my CD drive is "H:" , and I guess I should changed your code as :
 
mp.FileName := 'H:';

am I right ? but there is not any difference in result. infact it shows the same Number that if I use "C:" , "D:" and other HDD drives.

can you tell me what is the problem ?

---------------------------------------------------

Lee_Nover :

you are right, after each CD write the S/N changes ( the S/N which can be read by GetVolumeInformation ) but S/N CD protection was my recomendation to one of my friends :p :D , there for I have to find a similar way ;-) .

lopem :
I dont know , but I think about Files copy it must be a byte to byte copy like our Block read write in pascal. ( just I guess ).

Hamed
0
 
LVL 12

Expert Comment

by:Lee_Nover
ID: 7114372
the .Filename part should be :='d:\' .. don't forget the backslash
0
 
LVL 1

Author Comment

by:h_mohsenian
ID: 7116958
I tested again by BACKSLASH. but there was not any differance in Result ( again I saw equal Numbers for HDD drievs and CD Driv ).
0
 
LVL 1

Author Comment

by:h_mohsenian
ID: 7117013
I test it again by two different CD and it works. infact BACKSLASH was not important. it works just by CD Dirve and HDD Drive Char is not works. infact i saw a more interesting result . THE DRIVE SETTING IS NOT IMPORTANT, it means that I checked this by 'C:' not 'H:' and it got me the CD Number again :-))) . I recomend you to test it yourself.

anyways, As I said it worked and got me a different number for two different CD. but now I have a question, are you sure that by CD writing it will not changed ( like Volume serial Number that I mentioned above ). and also is it a unique number for each CD ??? I will test the first question ( S/N change with write ) but I can not test the second question ( the unique number )

thanks
Hamed
0
 
LVL 12

Expert Comment

by:Lee_Nover
ID: 7164397
buy a pack of cd's ... they will probably be of the same production class
with disks this results in them having the same ID
dunno bout CDs .. you'll just have to check
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.
This is a video that shows how the OnPage alerts system integrates into ConnectWise, how a trigger is set, how a page is sent via the trigger, and how the SENT, DELIVERED, READ & REPLIED receipts get entered into the internal tab of the ConnectWise …

943 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

6 Experts available now in Live!

Get 1:1 Help Now