![]() |
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:
gruss Sascha
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; |
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. |
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; |
AW: Seriennummer Informationen in Registry schreiben
Hey,
ich steh derzeit vor der gleichen Problematik: ![]() Ich werd hier auch meine Lösung posten, sobald ich sie gefunden habe ;-) LG |
AW: Seriennummer Informationen in Registry schreiben
Zitat:
Ich würde die ganzen Infos sowieso unter HKEY_CURRENT_USER packen. |
AW: Seriennummer Informationen in Registry schreiben
Ach Mist. Hier in der Reha verblödet man irgendwie.
|
AW: Seriennummer Informationen in Registry schreiben
Zitat:
|
AW: Seriennummer Informationen in Registry schreiben
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Ein Versuch: ;)
Delphi-Quellcode:
Noch einer:
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;
Delphi-Quellcode:
Noch einer:
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;
Delphi-Quellcode:
( ungetested ! )
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; PS.: und ja, mir ist langweilig. |
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... |
AW: Seriennummer Informationen in Registry schreiben
Zitat:
Zitat:
Zitat:
Diese wird aufgelöst, du siehst also das Profil des aktuell angemeldeten Nutzers. Ist ein Verweis auf HKEY_USERS\<USER-SID> |
AW: Seriennummer Informationen in Registry schreiben
Zitat:
Zitat:
|
AW: Seriennummer Informationen in Registry schreiben
@angos : Stimmt mit der Exception. aber wenn kein abfangen ist wird doch dennoch ein Fehler ausgeführt und der Feuermelder wird dennoch gesehen !!!! Odda nischt ???
|
AW: Seriennummer Informationen in Registry schreiben
An Caleb
natürlich wird die Registry später wieder freigegeben, habe ich nur bei dem Beispiel weggelassen. Der Code ist nicht gleich; ev ist das Problem hier: Mein Code: reg.OpenKey('Software\ESK',true); dorr557: OpenKey('Software\DeveloperName\AppName\', True); Ob dies das Problem ist habe ich nicht geprüft, könnte aber sein. Gruß Neumann |
AW: Seriennummer Informationen in Registry schreiben
Zitat:
Delphi-Quellcode:
hierbei wird der Fehler abgefangen, aber nicht ausgewertet, weiter verarbeitet. Siehe zu dem Thema auch mal in
try
eineVariable := 1 / 0; except end; ![]() Gruß angos |
AW: Seriennummer Informationen in Registry schreiben
Nein der Fehler wird nicht abgefangen. Es müsste dann
Delphi-Quellcode:
heissen. Wäre aber wenig sinnvoll!
try
eineVariable := 1 / 0; except on Exeption do begin end; end; |
AW: Seriennummer Informationen in Registry schreiben
Hallo zusammen,
Diese Lösung von TurboPascal erscheint mir sehr C-tricky, weil er sich das
Delphi-Quellcode:
gespart hat.
reg:=TRegistry.Create;
Delphi-Quellcode:
Abgesehen davon, daß ich "with" genauso schätze wie "goto", wieso funktioniert das eigentlich?
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; Gruß K-H |
AW: Seriennummer Informationen in Registry schreiben
Das Objekt wird ja genauso erzeugt als wenn du es einer Referenz ( reg) zuweist.
with erzeugt ein temp. Referenz |
AW: Seriennummer Informationen in Registry schreiben
Nun In meinem Ersten Beitrag habe ich ja die Variante reg:= TRegistry.create; verwendet.
Das mal zum einen. Meine Programme die ich bisher geschreiben haben haben immer eine PC-Lizenz in sofern wäre doch wieder der eintrag in die LOCAL_MACHINE sinnvoll. Mal wirklich die Frage von vorhin aufgreifend. Wo ist der eintrag RICHTIG ? HKEY_LOCAL_MACHINE oder HKEY_CURRENT_USER ? gruss Sascha |
AW: Seriennummer Informationen in Registry schreiben
Es kommt, wie schon geschriben darauf an, ob die Lizenz
-pro Rechner ( egal welcher Benutzer auf einem bestimmten Rechner) -pro Benutzer ( egal auf welchem Rechner) gelten soll |
AW: Seriennummer Informationen in Registry schreiben
in meinem fall immer (bis jetzt ;) ) pro rechner.
unter windows 7 wird die SNR gespeichert, in vista nicht... nun raff ich nix mehr. selber code wie am anfang. aber kann sie nicht lesen ich werde wohl wegen vista und windows 7 die komplette startroutine neu schreiben müssen. und evtl. etwas "übersichtlicher" gestalten... denn im laufe der zeit habe ich so viel an stellen gesetzt das der Überblick flöten gegangen ist. danke dennoch für die Informationen bisher. Also wenn ich das Richtig verstanden habe Pro Rechner HKEY_LOCAL_MACHINE und pro User HKEY_CURRENT_USER. @mkinzler : Komme mir wie ein Noboddy vor :) Immer bekomme ich antworten von dir. Egal in welchem Forum :roll: gruss Sascha |
AW: Seriennummer Informationen in Registry schreiben
Wenn Du pro Rechner (also unter HKLM) speichern willst, brauchst Du halt Adminrechte. Zum Lesen aber AFAIK nicht, Du darfst allerdings dann die TRegistry-Instanz nur mit Leserechten erzeugen.
|
AW: Seriennummer Informationen in Registry schreiben 32/64 bit !?
Eahmmm... kann es evtl sein das man unter der 64 und der 32 Bit version von windows Vista oder 7 auch noch etwas berücksichtigen muss ??
Auf meinem Netbook mit Windows 7 werden die daten gespeichert. Nur nicht gelesen... unter XP gings.... So unter Vista 64bit wurde es nichtmal in die Registry gespeichert ?! also nun stehe ich da wie der Ochs vorm berg.... gruss Sascha |
AW: Seriennummer Informationen in Registry schreiben
Das kenne ich. Wenn unter der 64-Bit-Version ein 32-Bit-Programm schreibt, schlägt die Virtualisierung zu, so dass der Eintrag unter WOW6432Node (oder so ähnlich, hab ich gerade nicht im Kopf) landet. Schau dort einmal nach.
|
AW: Seriennummer Informationen in Registry schreiben
Hallo zusammen,
wahrscheinlich ist es dem einen oder anderen klar, aber es wurde bisher nicht explizit erwähnt, auch in der Registry können/werden Zugriffsrechte ähnlich wie bei Dateien vergeben. Leider hat der "normale Heimanwender" keinen Zugriff darauf. Da braucht es schon die Prof. Version der Betriebssysteme. Aus diesem Grunde sind Aussagen wie, "unter XP hat aber funktioniert was unter Vista nicht mehr geht" eigentlich Blödsinn, da damit nur ein subjektives Symptom beschrieben wird und nicht die eigentliche Ursache "falsche Zugriffsrechte". Gruß K-H |
AW: Seriennummer Informationen in Registry schreiben
Wobei ich persönlich nichts an den standardmässig vergebenen Rechte ändern würde.
|
AW: Seriennummer Informationen in Registry schreiben
Zitat:
Man kann z.B. seit Windows 2000 (wahrscheinlich auch schon unter NT) als User in c:\programme schreiben. Es hat nur 15 Jahre lang niemand bemerkt, da jeder als Admin gearbeitet hat. Ähnlich verhält es sich mit HKLM. Rechte verstellen bedeutet in den meisten Fällen falsches Konzept im Programm. |
AW: Seriennummer Informationen in Registry schreiben
Entschuldigt, Rechte verstellen oder anpassen ist ja Sache des Admin, und der sollte wissen was er tut.
Und dahinter sollte auch ein Konzept stehen. Gruß K-H |
AW: Seriennummer Informationen in Registry schreiben
Besser ist aber das Programm, an die bestehenden Rechte anzupassen, als die Lauffähigkeit des Programmes von abweichenden Rechteeinstellungen in der Registry oder dem Dateisystem abhängig zu machen!
|
AW: Seriennummer Informationen in Registry schreiben
Um nochmal zum Kernproblem zurückzukommen: Schreiben des Wertes unter HKLM als Admin (z.B. im Verlauf des Setups). Lesen des Wertes dann mittels
Delphi-Quellcode:
Nach meiner Erfahrung sollte das so funktionieren. Wie man allerdings die Sache mit der WOW6432Node in den Griff bekommt, dazu kann ich nicht viel sagen, da ich kein 64Bit-OS besitze und das nur bei einem Kunden mal beobachtet habe.
Reg := TRegistry.Create(KEY_READ);
|
AW: Seriennummer Informationen in Registry schreiben
Also, Was das Thema angeht mit den Rechten möchte ich mal folgendes Sagen :
grundsätzlich ist es Meiner meinung nach Richtig das normale Benutzer keine Admin-Rechte besitzen. Is ja logisch. wenn man da einen Anfänger dran lässt geht hinterher das Halbe System nicht mehr. wie z.b. die winnt.dll oder so löschen ;) Was die Schreibrechte in der Registry angeht da muss ich mir wohl wirklich etwas ausdenken. Es wid wohl darauf hinaus laufen das ich in der Anwendung feststellen muss ob ich Admin bin oder nicht und dann den Hinweis geben das admin rechte benötigt werden damit die Seriennummer Rechnerweit gepeichert werden kann. Ansonsten wird die eben nur dem User zugewiesen und gut ist. Aber nun stehe ich wieder vor einem punkt Namlich Nach der Rechte überprüfung suchen :) aber ich denke dazu werde ich Hier im Forum sicher was finden. Bin sicherlich nicht der erste mit einem Solchen Problem :) Danke auf alle fälle für die Vielen antworten. Werde schauen was ich daraus mache. Wie schon ein Paar beiträge vorher gesagt. Muss ich wohl die Registry geschichte von Vorne schreiben und das entsprechend anpassen. Danke euch Leutz... Ihr Seid die Besten :) |
AW: Seriennummer Informationen in Registry schreiben
Zitat:
![]() |
AW: Seriennummer Informationen in Registry schreiben
Man könnte dieses Recht auch einfach anfordern ( elevation)
|
AW: Seriennummer Informationen in Registry schreiben
Zitat:
|
AW: Seriennummer Informationen in Registry schreiben
Zitat:
Dann machst du ein Knopf mit Schild "Seriennummer eingeben". Dieser Knopf impersonated dann zum Admin. Sakura (Daniel) hat dazu Beispiel gemacht?! Zumindest habe ich mal eine Demo gesehen. |
AW: Seriennummer Informationen in Registry schreiben
Zitat:
Wo hassn das gesehen ? So aber was anderes. Was mich nun total verwirrt. Ich hoffe auf Erleuchtung. Ich hatte zum Lesen folgenden Code geschrieben :
Delphi-Quellcode:
so nun (Ich weiss ich wiederhole mich) in XP konnte die Funktion KeyExists mir ein true geben. Unter 7 ein False. (Vista noch nicht versucht)
Reg := TRegistry.Create;
with Reg do begin RootKey := HKEY_LOCAL_MACHINE; Ver := inttostr(Version.Hauptversion) + '.' + inttostr(Version.Nebenversion); Ver_new := ver; OpenKeyReadOnly(RegPath+Ver); if KeyExists('S/NR') then MainConfig.SENR := ReadString('S/NR') else MainConfig.SENR := ''; if KeyExists('firma') then MainConfig.Firma := ReadString('firma') else MainConfig.Firma := ''; CloseKey; end; nun habe ich eine naja mehr oder weniger eingebung gehabt und habe mir gedacht das Keys ja eigentlich nicht die Einträge sind sondern die Schlüssel "Ordner". also kam Folgendes dabei raus :
Delphi-Quellcode:
:wall:
Reg := TRegistry.Create;
with Reg do begin RootKey := HKEY_LOCAL_MACHINE; Ver := inttostr(Version.Hauptversion) + '.' + inttostr(Version.Nebenversion); Ver_new := ver; OpenKeyReadOnly(RegPath+Ver); if ValueExists('S/NR') then MainConfig.SENR := ReadString('S/NR') else MainConfig.SENR := ''; if ValueExists('firma') then MainConfig.Firma := ReadString('firma') else MainConfig.Firma := ''; CloseKey; end; So nun kann ich das wenn die Software als Admin gestartet ist speichern und als user lesen :) Aber nun erkläre mir mal jemand das XP das akzeptiert hat obwohl es eigentlich ja schon von anfang an falsch programmiert wurde oder ? :gruebel: |
AW: Seriennummer Informationen in Registry schreiben
Zitat:
![]() ![]() Aber wenn ich das richtig verstanden hab, dann sollte hier z.B. ein OutOfProcessServer, welche mit den nötigen Adminrechten läuft, besser sein. [edit] hatte ich mir doch mal was gemerkt ![]() |
AW: Seriennummer Informationen in Registry schreiben
also die Methode habe ich versucht. Aber das geht warscheinlich nur bei XP oder NT. unter Vista und windows 7 geht das nicht. werde wohl auch auf die Methode mit einer Externen exe zurückgreifen müssen.
gruss Sascha |
AW: Seriennummer Informationen in Registry schreiben
Hallo,
hab mal kurz durchgelesen, hat das Programm eine Setup-Routine ? Das Setup Programm benötigt Admin-Rechte, da kannste vielleicht schon beim Setup die Eingabe der Seriennummer realisieren. Im übrigen, falls es sich um eine 32 Bit Anwendung handelt (vermute ich mal) dann gehören die Key's selbstverständlich unter "WOW6432Node" von da werden Sie auch ganz automatisch wieder gelesen, da muss man nichts machen ! Welch Unfug ein 32-Bit Programm unter 'HKEY_LOCAL_MACHINE\Software\Mein Programmm' Einträge schreiben zu lassen. Das gehört unter 'HKEY_LOCAL_MACHINE\Software\WOW6432Node\Mein Programmm', ist doch wohl logisch... Es sei denn du willst sowas machen: 'HKEY_LOCAL_MACHINE\Software\Microsoft\...' Beim Lesen von Registry Keys sollte man übrigens auf 'ReadOnly' achten, sonst passiert irgendwann ![]() kuba |
AW: Seriennummer Informationen in Registry schreiben
Zitat:
Delphi-Quellcode:
Bischen Info dazu, da Du geschrieben hast, Dir ist das alles
var regist: TRegistry;
begin regist := TRegistry.Create; try regist.RootKey := HKEY_CURRENT_USER; regist.OpenKey('Software\MeineFirma\MeinProgramm\1.0', true); regist.WriteInteger('Left', Form1.Left); regist.WriteInteger('Top', Form1.Top); finally regist.free; end; end; etwas suspekt, was da passiert (passieren soll). Als erstes wird nun eine Instanz mit dem Namen "regist" der Klasse TRegisty gebildet. Statt "regist" kann natürlich jeder beliebige, gültige Variablenname verwendet werden. Als Hauptschlüssel (RootKey) wird hier HKEY_CURRENT_USER verwendet. Diese Zuweisung wäre nicht nötig, da dieser Hauptschlüssel standardmäßig verwendet wird, wenn RootKey nichts zugewiesen wird - aber sicher ist sicher. Nun wird der Schlüssel geöffnet, in den wir unsere Daten schreiben wollen. Der Boolean-Wert (zweiter Parameter von OpenKey) hat folgende Bedeutung: Bei "true" wird der Schlüssel erzeugt, wenn er noch nicht existiert, bei "false" nicht. Mit den Methoden WriteInteger werden die Daten gespeichert. Der erste Wert gibt den Namen an, unter dem der folgende Wert (zweiter Parameter) später wieder abrufbar ist. Bei "WriteInteger" muss der zu speichernde Wert natürlich eine Ganzzahl sein. Daneben gibt es für andere Datentypen entsprechende Methoden wie "WriteString", "WriteDateTime", "WriteFloat" usw. Wird der Registry-Zugriff nicht mehr benötigt, sollte er geschlossen werden (regist.free). Damit wird der Speicherplatz der Instanz "regist" im Arbeitsspeicher wieder freigegeben. Wäre stattdessen ein Zugriff auf einen anderen Schlüssel nötig gewesen, hätte der aktuelle über "CloseKey" geschlossen werden können. Spezielle Schlüssel in der Registry Wer etwas in der Registry stöbert, findet einige interessante Schlüssel, die auch von eigenen Anwendungen ausgelesen werden können. Gutes Beispiel ist der Schlüssel HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion. Zu beachten ist nur, dass unter NT und höher statt "Windows" der Schlüssel "Windows NT" verwendet werden muss. CurrentVersion Windows-Version, z.B. 5.0 ProductName Klartext Windows-Version, z.B. Microsoft Windows 2000 RegisteredOwner Name des Besitzers RegisteredOrganization Name der Firma SourcePath Verzeichnis, aus dem Windows installiert wurde (meist CD) PathName Windows-Verzeichnis Allerdings gibt es für alle o.g. Beispiele auch Windows-Funktionen, die die entsprechenden Werte zurückliefern. Wenn man diese verwendet, ist man auf der sicheren Seite und muss nicht berücksichtigen, unter welchen Windows-Versionen sich die Werte in welchen Keys verstecken.
Delphi-Quellcode:
Den Read-Methoden (hier ReadInteger) wird in Klammern der Name des Wertes übergeben, der ausgelesen werden soll. Dieser Wert wird dann, wie bei Funktionen üblich, als Ergebniswert zurückgeliefert.
var regist: TRegistry;
begin regist := TRegistry.Create; try regist.RootKey := HKEY_CURRENT_USER; regist.OpenKey('Software\MeineFirma\MeinProgramm\1.0', true); Form1.Left := regist.ReadInteger('Left'); Form1.Top := regist.ReadInteger('Top'); finally regist.free; end; Nun könnte es sein, dass es sich beim Ausführen obiger Methode um den ersten Programmstart handelt, der Schlüssel MeineFirma\MeinProgramm\1.0 also noch gar nicht existiert. Da wir bei OpenKey als zweiten Parameter "true" angegeben haben, wird der Schlüssel dadurch erzeugt. Die Werte "Left" und "Top" gibt es aber nach wie vor nicht und können deshalb auch nicht ausgelesen werden. In solchen Fällen löst die Laufzeitumgebung eine Exception (ERegistryException) aus. Am saubersten ist es, vor dem Lesen zu prüfen, ob der gewünschte Key existiert. Die Funktion "OpenKey" gibt true zurück, wenn der gewünschte Schlüssel vorhanden ist, ansonsten false. Das Vorhandensein einzelner Werte lässt sich mit "ValueExists" prüfen
Delphi-Quellcode:
Besonderheiten bei Windows NT/2000/XP und neuer
var
regist: TRegistry; begin // Default-Werte setzen, falls Werte nicht in Registry vorhanden Form1.Left := 0; Form1.Top := 0; regist := TRegistry.Create; try regist.RootKey := HKEY_CURRENT_USER; if regist.OpenKey('Software\MeineFirma\MeinProgramm\1.0', false) then begin try // Prüfen, ob Wert "Left" vorhanden if regist.ValueExists('Left') then Form1.Left := regist.ReadInteger('Left'); // Prüfen, ob Wert "Top" vorhanden if regist.ValueExists('Top') then Form1.Top := regist.ReadInteger('Top'); finally regist.CloseKey; end; end; finally regist.Free; end; end; Wie bereits erwähnt, können unter NT-Systemen nur Anwender mit Administrator-Rechten auf den HKEY_LOCAL_MACHINE-Schlüssel der Registry schreibend zugreifen. Wird also in einem Programm der Schreibzugriff auf diesen Schlüssel verwendet, sollte try-except verwendet werden, um ein mögliches Fehlschlagen abzufangen. Auch das Lesen aus diesem Schlüssel ist unter NT nicht ganz problemlos. Über die oben vorgestellte Möglichkeit versucht Delphi immer, Vollzugriff (lesen und schreiben) zu erlangen. Ist das nicht möglich, weil ein NT-User keine Administrator-Rechte hat, tritt eine Exception auf. Da das Lesen von HKLM jedoch allen NT-Usern möglich ist, müssen wir Delphi klar machen, dass wir in diesem Fall keinen Vollzugriff, sondern nur Lesezugriff wollen. Das geht so: regist := TRegistry.Create(KEY_READ); Weitere Möglichkeiten zum Thema Zugriffsrechte sind in der Delphi-Hilfe unter TRegistry.Access zu finden. Schöne Grüße aus Nürnberg, Manfred |
AW: Seriennummer Informationen in Registry schreiben
...
Nachschlag: Laß mal den BackSlash am Ende des Strings in OpenKey weg! anstatt:
Delphi-Quellcode:
mach mal:OpenKey('Software\DeveloperName\AppName\', True);
Delphi-Quellcode:
auch:OpenKey('Software\DeveloperName\AppName', True);
Delphi-Quellcode:
würde ich lieber so probieren:WriteString('S/NR', MainConfig.SENR);
Delphi-Quellcode:
Schöne Grüße,WriteString('S-NR', MainConfig.SENR); Manfred |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:01 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