Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Seriennummer Informationen in Registry schreiben (https://www.delphipraxis.net/153944-seriennummer-informationen-registry-schreiben.html)

dor557 21. Aug 2010 14:49

Seriennummer Informationen in Registry schreiben
 
Servus zusammen.

Mal wieder ein Windows Vista / 7 Problem.

Ich habe bisher immer unter XP die Seriennummer Informationen meiner Programme unter HKEY_LOCAL_MACHINE/SOFTWARE/....
Gespeichert.

Nun scheint das aber nicht mehr zu gehen. Selbst wenn ich als Admin starte werden die Daten nicht gespeichert. Ich bekomme nichtmal eine Fehlermeldung.

irgendwie raff ich nicht wieso.

weiss jemand rat ??

hier mal der Code der das Speichern soll :

Delphi-Quellcode:
Procedure TMainForm.Reg_Sav;
var Reg : TRegistry;
    ver : String;
begin
  Reg := TRegistry.Create;
  with Reg do
  begin
    RootKey := HKEY_LOCAL_MACHINE;
    OpenKey('Software\DeveloperName\AppName\', True);
    WriteString('firma', MainConfig.Firma);
    WriteString('S/NR', MainConfig.SENR);
    CloseKey;
    Free;
  end;
end;
gruss Sascha

Luckie 21. Aug 2010 14:58

AW: Seriennummer Informationen in Registry schreiben
 
Wie wäre es mal mit einer richtigen Fehlerbehandlung? Desweiteren wäre es recht nützlich, wenn du uns mitteilst unter welchem Windows es nicht mehr funktioniert.

Aber meine Glaskugel sagt mir, dass die Virtualisierung zuschlägt. Nähere Informationen dazu im Forum.

Neumann 21. Aug 2010 15:30

AW: Seriennummer Informationen in Registry schreiben
 
Hallo,

dies funktioniert bei allen Windows-Versionen, auch wenn ESK noch nicht existiert:

Delphi-Quellcode:
try
  reg:=tregistry.Create;
  reg.RootKey:=HKey_Local_Machine;
  reg.OpenKey('Software\ESK',true);
  reg.WriteString('ID',s);
  reg.CloseKey;
except
  reg.Free;
  messagedlg(_('Nicht genügend Rechte vorhanden.')+#13+ ....
                   
end;

JannesDKS 21. Aug 2010 15:45

AW: Seriennummer Informationen in Registry schreiben
 
Hey,

ich steh derzeit vor der gleichen Problematik:

http://www.delphipraxis.net/153943-r...ml#post1043950

Ich werd hier auch meine Lösung posten, sobald ich sie gefunden habe ;-)
LG

Die Muhkuh 21. Aug 2010 16:33

AW: Seriennummer Informationen in Registry schreiben
 
Zitat:

Zitat von Luckie (Beitrag 1043946)
Desweiteren wäre es recht nützlich, wenn du uns mitteilst unter welchem Windows es nicht mehr funktioniert.

Desweiteren wäre es recht nützlich, wenn Du richtig lesen würdest. Steht nämlich da. ;-)

Ich würde die ganzen Infos sowieso unter HKEY_CURRENT_USER packen.

Luckie 21. Aug 2010 16:35

AW: Seriennummer Informationen in Registry schreiben
 
Ach Mist. Hier in der Reha verblödet man irgendwie.

lbccaleb 22. Aug 2010 10:15

AW: Seriennummer Informationen in Registry schreiben
 
Zitat:

Zitat von Neumann (Beitrag 1043949)
Hallo,

dies funktioniert bei allen Windows-Versionen, auch wenn ESK noch nicht existiert:

Delphi-Quellcode:
try
  reg:=tregistry.Create;
  reg.RootKey:=HKey_Local_Machine;
  reg.OpenKey('Software\ESK',true);
  reg.WriteString('ID',s);
  reg.CloseKey;
except
  reg.Free;
  messagedlg(_('Nicht genügend Rechte vorhanden.')+#13+ ....
                   
end;

Erstens hat er es so wie du, und zweitens hast du es sogar falsch, da du reg nur bei einem fehler frei gibst ;)

turboPASCAL 22. Aug 2010 11:10

AW: Seriennummer Informationen in Registry schreiben
 
Zitat:

Zitat von dor557 (Beitrag 1043944)
Servus zusammen.

Servus !


Zitat:

Zitat von dor557 (Beitrag 1043944)
Mal wieder ein Windows Vista / 7 Problem.

Och, so schlimm wird es nicht sein... ;)

Zitat:

Zitat von dor557 (Beitrag 1043944)
Ich habe bisher immer unter XP die Seriennummer Informationen meiner Programme unter HKEY_LOCAL_MACHINE/SOFTWARE/....
Gespeichert.

Da gehört es nicht hin.
Zitat:

Zitat von Luckie (Beitrag 1043946)
Ich würde die ganzen Infos sowieso unter HKEY_CURRENT_USER packen.

Das wäre passend.

Zitat:

Zitat von dor557 (Beitrag 1043944)
Nun scheint das aber nicht mehr zu gehen. Selbst wenn ich als Admin starte werden die Daten nicht gespeichert. Ich bekomme nichtmal eine Fehlermeldung.

Liegt an deinem Sourcecode. ;)

Zitat:

Zitat von dor557 (Beitrag 1043944)
hier mal der Code der das Speichern soll :

Delphi-Quellcode:
Procedure TMainForm.Reg_Sav;
var Reg : TRegistry;
    ver : String;
begin
  Reg := TRegistry.Create;
  with Reg do
  begin
    RootKey := HKEY_LOCAL_MACHINE;
    OpenKey('Software\DeveloperName\AppName\', True);
    WriteString('firma', MainConfig.Firma);
    WriteString('S/NR', MainConfig.SENR);
    CloseKey;
    Free;
  end;
end;

Autsch. ;)

Ein Versuch: ;)
Delphi-Quellcode:
Function TMainFormUndSo.RegSaveUserLizense(Firma, Serial: string): boolean;
var
  Reg : TRegistry;
  ver : String;
begin
  Result := False;

  Reg := TRegistry.Create;
  try
    with Reg do
    begin
      RootKey := HKEY_LOCAL_USER;
      OpenKey('Software\DeveloperName\AppName\', True);
      WriteString('Firma', Firma);
      WriteString('S/NR', Serial);
      CloseKey;
      Result := True;
     end;
  finally
    Reg.Free;
  end;
end;
Noch einer:
Delphi-Quellcode:
Function TMainFormUndSo.RegSaveUserLizense(Firma, Serial: string): boolean;
var
  ver : String;
begin
  Result := False;

  with TRegistry.Create do
  try
    RootKey := HKEY_LOCAL_USER;
    OpenKey('Software\DeveloperName\AppName\', True);
    WriteString('Firma', Firma);
    WriteString('S/NR', Serial);
    CloseKey;

    Result := True;
  finally
    Free;
  end;
end;
Noch einer:
Delphi-Quellcode:
Function TMainFormUndSo.RegSaveUserLizense(Firma, Serial: string): boolean;
var
  ver : String;
begin
  Result := False;

  with TRegistry.Create do
  try
    RootKey := HKEY_CURRENT_USER;
    OpenKey('Software\DeveloperName\AppName\', True);
    try
      try
        WriteString('Firma', Firma);
        WriteString('S/NR', Serial);
        Result := True;
      except
        on E: Exception do ShowMessage('Folgender Fehler trat auf:'#13 + E.Message);
      end;

    finally
      CloseKey;
    end;

  finally
    Free;
  end;
end;

procedure TMainFormUndSo.FormCreate(Sender: TObject);
begin
  if not RegSaveUserLizense('Numpsi', 'CA1002030E8554401AF090EFF') then {...} ;
end;
( ungetested ! )

PS.: und ja, mir ist langweilig.

dor557 23. Aug 2010 07:59

AW: Seriennummer Informationen in Registry schreiben
 
Erstmal danke für die ganzen Antworten.

Mal eine Frage allgemein zur Registry..... Irgend wie habe ich da den sinn nicht verstanden.

HKEY_CURRENT_USER speichert doch die Daten nur in dem Aktuellen Benutzer der angemeldet ist wie der Schlüssel schon sagt. Oder nicht ?

HKEY_LOCAL_MACHINE speichert die Daten doch SYSTEMWEIT was doch wenn man die Seriennummer nur ein mal eingeben will und nicht bei Jedem Benutzer einzeln mehr sinn machen würde oder ?

Noch eine Frage... Woher kommt HKEY_LOCAL_USER ??? und warum kann ich diesen eintrag in der Regedit nicht direkt sehen ???

Oder bin ich etwas auf dem Holzweg....

@TurboPascal : Danke für die Ausführungen ;) werde diese dann entspechend umsetzen. Ich habe noch einiges in der Software aus zu bessern und mit entsprechender Fehlersuche aus zu statten damit das Debuggen hinterher besser Funktioniert.

@Alle anderen : Auch euch danke. Aber ist es nicht so das ein Runtime Error oder eine Fehlermeldung so oder so auftaucht wenn man die Procedure nicht in eine Try...Except schleife gesetzt hat ?

zumindest war das bisher immer so.

Habe noch nicht so oft Programme in Vista oder Windows 7 in verwendung gehabt. Nun habe ich nen Laptop mit Windows 7 und ich muss mal schauen das ich da das TurboDelphi installieren kann ;) mal schauen ob das klappt. unter vista war es schon schwer genug...

mkinzler 23. Aug 2010 08:18

AW: Seriennummer Informationen in Registry schreiben
 
Zitat:

HKEY_CURRENT_USER speichert doch die Daten nur in dem Aktuellen Benutzer der angemeldet ist wie der Schlüssel schon sagt. Oder nicht ?
Ja
Zitat:

HKEY_LOCAL_MACHINE speichert die Daten doch SYSTEMWEIT was doch wenn man die Seriennummer nur ein mal eingeben will und nicht bei Jedem Benutzer einzeln mehr sinn machen würde oder ?
Kommt darauf an, ob diese pro Rechner oder pro Nutzer gelten soll. Bei Delphi ist diese z.B. pro Nutzer, und kann so bei der Verwendung von Netzprofilen, von verschiedenen Rechner au verwendet werden.

Zitat:

Noch eine Frage... Woher kommt HKEY_LOCAL_USER ??? und warum kann ich diesen eintrag in der Regedit nicht direkt sehen ???
Heisst auch HKEY_CURRENT_USER und ist nicht unbedingt lokal
Diese wird aufgelöst, du siehst also das Profil des aktuell angemeldeten Nutzers. Ist ein Verweis auf HKEY_USERS\<USER-SID>


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:47 Uhr.
Seite 1 von 5  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz