Autor Beitrag
Bitburki
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Mi 02.06.10 15:45 
in meiner Setup-Routine meiens Programms speicher ich bei erfolgreicher Seriennummerneingabe die Serial in die Registry:
ausblenden Delphi-Quelltext
1:
2:
3:
           regist.RootKey:= HKEY_LOCAL_MACHINE;
           if (regist.OpenKey('SOFTWARE\bitburkis_app', true) = true) then
             regist.WriteString('serial', szSerialNum);

Leider haben nun einige User das Problem, daß der Wert nicht in der Registry gespeichert wird (deshalb startet das Programm nicht). Ich frage mich deshalb, soll ich anstatt im Root "hkey_local_machine" lieber im Root "hkey_current_user" speichern? Oder am Besten in beiden?
(Das Problem tritt auch dann auf, wenn unter Adminuser installiert wird und unter anderem User gestartet werden soll)...

Wo würdet ihr so einen Eintrag abspeichern?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 02.06.10 15:53 
Moin!

user profile iconBitburki hat folgendes geschrieben Zum zitierten Posting springen:
Wo würdet ihr so einen Eintrag abspeichern?
Genau da gehört sowas hin, wenn man den Setup-Typ "Alle Benutzer" gewählt hat. :nixweiss:

Für "Nur für mich" wäre dann HKCU angebracht, selber Zweig.

Die spannende Frage ist also eher: warum kann der Schlüssel nicht angelegt werden oder zumindest nicht gelesen? :gruebel: Es scheint ja Leute zu geben, bei denen alles funktioniert. Was also unterscheidet die funktionierenden von den nicht-funktionierenden Installationen?

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Bitburki Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Mi 02.06.10 16:10 
Das weiß ich eben auch nicht.
Das Setup geschieht über Macrovision Installshield, und da gibts dann ne Integration von nem Serial Dialog. Unter der Serialeingabe steht dann die Option (jeden, der diesen Computer verwendet || oder || Nur für mich). Aber wie komme ich an die Daten ran? Vielleicht liegts ja daran

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Achja, meine Function schaut in der DLL so aus:
ausblenden Delphi-Quelltext
1:
function Validate(mainwin: Hwnd; szSrcDir, szSupport, szSerialNum, szDataBase: LPSTR): Integer; exportstdcall					
Kann ich dort irgendwo abfragen?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 02.06.10 16:24 
Moin!

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Was also unterscheidet die funktionierenden von den nicht-funktionierenden Installationen?
user profile iconBitburki hat folgendes geschrieben Zum zitierten Posting springen:
Das weiß ich eben auch nicht.
Naja, wie willst du das dann jemals beheben? :?

Du könntest zunächst mal diese =TRUE-Abfrage rausschmeißen:
ausblenden Delphi-Quelltext
1:
if (regist.OpenKey('SOFTWARE\bitburkis_app', true) = truethen // das markierte einfach weglassen, ist eh unnötig, wenn nicht gar falsch					

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
SvenAbeln
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 334
Erhaltene Danke: 3



BeitragVerfasst: Mi 02.06.10 16:50 
Wie greifst du denn auf die Registry zu um die Seriennummer zu prüfen?
Unter Windows Vista und Windows 7 darf ein normaler User die Keys unter HKEY_LOCAL_MACHINE nur readonly öffnen.

ausblenden Delphi-Quelltext
1:
2:
3:
regis:= TRegistry.Create(KEY_READ);
// oder
regis.Access := KEY_READ;
Bitburki Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Do 03.06.10 14:38 
Naja, schreiben tu ich wie im Eingangspost beschrieben.
Lesen würde auch klappen, wenn er denn geschrieben hätte...
Ich vermute es liegt hier ein Berechtigungsproblem vor.
Ich habs jetzt erstmal so gelöst, daß wenn er im Setup die Serial richtig eingegeben hat, ich das Setupprogramm den Registrywert hart vergebe (import reg-file). Das scheint zu funktionieren