Einzelnen Beitrag anzeigen

Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#14

Re: Program nur bei engelegter CD nutzen

  Alt 15. Dez 2003, 13:18
Zitat:
Hallo,

Ich habe dieses Problem einmal wie folgt gelöst:

Die Installationsroutine ermittelte über GetVolumeInformation die Serien-Nr. der CD.
Dieser Wert wurde in die Registry geschrieben und jedesmal beim Aufruf mit der CD verglichen.

Das wars, es ist zwar kein Kopierschutz, zwingt jedoch zum einlegen der CD.
Zitat:
Ja,

genau das könnte ich brauchen, können sie mir das genauer erklären, wie und wo mache ich so was, (beim install-schield, oder wo), und wie kann ich dann diesen wert aufrufen und vergleichen. wenn sie auch noch code haben, dass wäre prima.

Danke
Klar, hab jetzt mal ein bisschen rumprobiert und bin zu folgendem Ergebniss gekommen:

Delphi-Quellcode:
uses Registry;

function Seriennummer(Laufwerk: PChar): string;
var
  NotUsed: DWORD;
  VolumeFlags: DWORD;
  VolumeInfo: array[0..MAX_PATH] of Char;
  VolumeSerialNumber: DWORD;
begin
  GetVolumeInformation(PChar(Laufwerk + ':\'),
    nil, SizeOf(VolumeInfo), @VolumeSerialNumber, NotUsed,
    VolumeFlags, nil, 0);
  Result := Format('%8.8X',[VolumeSerialNumber])
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Reg: TRegistry;
  Serial, RegSerial: String;
begin
  Serial:=Seriennummer('E');
  try
  Reg:= TRegistry.Create;
  Reg.Rootkey:=HKEY_CURRENT_USER;
  if not Reg.KeyExists('Software\Uncle Cracker')
  then begin
  Reg.Openkey('Software\Uncle Cracker',true);
  Reg.WriteString('Seriennummer', Serial)
  end else begin
  Reg.Openkey('Software\Uncle Cracker',true);
  RegSerial:=Reg.ReadString('Seriennummer');
  if not (RegSerial=Serial) then begin Showmessage('Falsche CD im Laufwerk'); halt
  end;
  end;
  finally
  Reg.Free;
end;
end;

Ist zwar nicht der schönste Code, doch er funktioniert.

Also:

Beim 1. starten schreibt das Programm die CD-Seriennummer in die Registry.
Beim 2. starten überprüft es jedesmal, ob es die gleiche Seriennummer ist wie beim letztem Start auch.

Das ganze könnte man jetzt ins Programm einbauen, doch anstatt Seriennummer('E') zu übergeben einfach den Laufwerkstypen auf dem das Programm gestartet wurde.


[Edit]PS: Falls es noch fragen zum Code gibt, einfach stellen [/Edit]
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat