AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) ProductID auslesen zwecks "Kopierschutz"
Thema durchsuchen
Ansicht
Themen-Optionen

ProductID auslesen zwecks "Kopierschutz"

Ein Thema von erich.wanker · begonnen am 26. Mai 2015 · letzter Beitrag vom 27. Mai 2015
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
464 Beiträge
 
Delphi XE4 Professional
 
#1

ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 09:58
Hallo Leute,

ich möchte gerne einen "eindeutigen" String eines WindowsOS auslesen..
Gegal ob UAC aktiv oder nicht
Egal ob 32 oder 64 Bit Windows
Egal ob reale Maschine oder virtuelle Maschine
Egal ob uraltes oder neuestes Betriebssystem
Egal - welche Userberechtigung anliegt

Anhand dieses Strings würde ich dann online "nachschauen" - ob der Rechner eine gültige Nutzungslizenz besitzt.


Hab momentan die unten ageführten Zeilen:

Ist das eurer Meinung nach ne brauchbare Lösung (auch in Bezug auf Win10?)

Vielen Dank für Infos

Erich



Delphi-Quellcode:
function TMainForm.GetWindowsRegistryValuesA: string;
const
  CDataValue1: string = 'DigitalProductId';
  CDataValue2: string = 'DigitalProductId4';
  CKeyName: string = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\';
var
  Reg: TRegistry;
  message_string:String;
  vSize, p: integer;
  tmpStr: AnsiString;
begin

  message_string:='Keine Werte gefunden';

  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if (Reg.OpenKeyReadOnly(CKeyName)) then
    begin
      try

        if Reg.ValueExists(CDataValue1) then // 32 Bit OS
              begin
              vSize := reg.GetDataSize(CDataValue1);
              if (vSize > 0) then
              begin
                SetLength(tmpStr, vSize);
                reg.ReadBinaryData(CDataValue1, tmpstr[1], vSize);
                repeat
                  p := Pos(#0, tmpStr);
                  if p <> 0 then
                    Delete(tmpStr, p, 1);
                until p = 0;
                message_string :='ProductID 32bit:'+ tmpStr;
              end;
              end;

        if Reg.ValueExists(CDataValue2) then // 64 Bit OS
              begin
              vSize := reg.GetDataSize(CDataValue2);
              if (vSize > 0) then
              begin
                SetLength(tmpStr, vSize);
                reg.ReadBinaryData(CDataValue2, tmpstr[1], vSize);
                repeat
                  p := Pos(#0, tmpStr);
                  if p <> 0 then
                    Delete(tmpStr, p, 1);
                until p = 0;
                message_string :='ProductID 64bit:'+ tmpStr;
              end;
              end;

      finally
        Reg.CloseKey;
      end;
    end;
  finally
    Reg.Free;
  end;

  showmessage(message_string);

end;
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \

Geändert von erich.wanker (26. Mai 2015 um 10:07 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 10:00
Und wenn jemand sein OS neu installiert oder upgraded ist die Lizenz nicht mehr gültig? Ich dachte (Achtung, Halbwissen), so etwas macht man üblicherweise über die MAC des ersten Netzwerkadapters?
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 10:00
Was soll Dir das bringen ? Was passiert wenn der Anwender einen Betriebssystemwechsel durchführt ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
464 Beiträge
 
Delphi XE4 Professional
 
#4

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 10:06
Falls der User das Betriebssystem wechselt - schick ich ihm eine neue Lizenz ..

Mir geht es nur darum - dass die Software auf EIN verifiziertes OS beschränkt ist.
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 14:15
Falls der User das Betriebssystem wechselt - schick ich ihm eine neue Lizenz ..

Mir geht es nur darum - dass die Software auf EIN verifiziertes OS beschränkt ist.
Liest sich für mich so, als ob es für XP,Vista,W7,W8,W8.1 usw. jeweils einen Lizenzschlüssel gäbe.


Und ansonsten, es ist alles eine Frage der Kosten/Nutzenrechnung. Sowohl auf Programmierer- als auch auf Nutzer-Seite. " was ist es mir wert diese Funktionalität zu haben "

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.683 Beiträge
 
Delphi 5 Professional
 
#6

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 14:42
Falls der User das Betriebssystem wechselt - schick ich ihm eine neue Lizenz ..

Mir geht es nur darum - dass die Software auf EIN verifiziertes OS beschränkt ist.
Und das machst du auch, wenn der Nutzer sein OS neu installiert? Die ProductID ändert sich mit jeder Neuinstallation! Nur für den Fall, dass du ProductID und Product Key verwechseln solltst...

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#7

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 19:53
Grundsätzlich muss man zwischen B2C und B2B Software unterscheiden.
Im B2B-Bereich wird sehr viel gecrackt, und eine letztlich 100%igen Schutz gibt es nicht, außer vielleicht eine zwingende Onlineprüfung, welche aber bei mangelnder Onlineverbindung zu Userfrust führt. Und auch das wäre keine unüberwindbare Hürde.
Im B2B reicht im Grunde ein einfacher Schutz, so dass die Software nicht "rumgereicht" wird. Da ist ein guter Support ein wesentlich besserer Kopierschutz. Denn Businesskunden haben mehr Interesse daran, das ihre Software 24/7 läuft, und sie bei Problemen kompetenten Support erhalten, als sich durch Raubkopien ein paar Euro zu ersparen, wie, sie wissen, dass gute Leistung auch bezahlt werden muss.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 20:18
Jetzt haben wir sehr viele Meinungen zum Themas "Kopierschutz", aber keine technischen Antworten auf die Frage.
Bei aller - durchaus berechtigten - Kritik/Zurückhaltung/Vorsicht kann man ja dennoch auf die technischen Inhalte eingehen.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 20:31
Falls der User das Betriebssystem wechselt - schick ich ihm eine neue Lizenz ..

Mir geht es nur darum - dass die Software auf EIN verifiziertes OS beschränkt ist.
Generell würde ich die Festplatten-Seriennummer nehmen. Hab das jahrelang gemacht und keine "funktionalen" Probleme damit gehabt. Der Kunde kann in dem Fall wenigstens sein OS ohne Stress neu installieren. Aber, das ständige Neu- bzw. Umlizenzieren hat zu viel Zeit gekostet. Kommt natürlich darauf an, wieviele Lizenzen man im Einsatz hat. Ein Problem ist, man kann dem Kunden ja nichts dafür berechnen, denn er hat ein Nutzungsrecht einer Software gekauft.

Spätestens dann wenn er die Software nicht (mehr) benutzen kann, und daraus ein Schaden entsteht (Produktionsausfall, Rechnungen können nicht geschrieben werden...was auch immer) kann es sehr schnell sehr teuer werden. Der Streitwert liegt fast immer dem Software-Wert und darum wird aus sowas fast immer ein Minus-Geschäft. Weil ich mich mit meinen Kunden nicht vor Gericht treffen möchte, habe ich dann den Blödsinn mit der Hardwarebindung (oder in deinem Fall Softwarebindung) sein lassen. Eine normale Lizenzdatei tut's auch. Und macht keinen Stress. Und wenn der Kunde sie verliert muss ich nichts umsonst machen.
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#10

AW: ProductID auslesen zwecks "Kopierschutz"

  Alt 26. Mai 2015, 10:16
Ich sage mir in solchen Fällen immer: ist das Programm so gut, dass es die halbe Welt haben will, wird man es knacken. Ist es ein unwichtiges pillepale Programm, wozu der Aufwand?

Also diese Methode kann man wohl mit einem Eintrag in hosts aushebeln. Es seiden, das Programm funktioniert gar nicht ohne Überprüfung. Dann funktioniert es also immer dann nicht wenn man kein Internetzugang hat.

Mal klein wenig OT: zum Kopierschutz habe ich ein gespaltenes Verhältnis. Es sollte gut, aber nie zu gut sein. Ich habe schon so manche ehemals sehr erfolgreiche Programme von jetzt auf sofort von der Bildfläche verschwinden sehen, als die einen guten Kopierschutz eingeführt haben. Illegale Kopien, so sehr sie einen ärgern, sind auch immer etwas kostenlose Werbung.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz