Autor |
Beitrag |
Peter2002
      
Beiträge: 103
Win XP, Win 7
Delphi 2007 / XE3
|
Verfasst: Mi 28.07.04 09:37
Hi @ll,
hoffentlich habe ich die richtige Sparte erwischt ...
Mein Prog speichert sämtliche Einstellungen in ner ini-File. Wenn ich das nun auf nem anderen Rechner (WinXP) installiere (Admin) funktioniert es auch prima. Als User hab ich dann aber plötzlich keine Zugriffsreche auf meine eigene ini mehr! Es kann dann ja wohl kaum sein, dass nach der Installation manuell die Rechte gesetzt werden müssen. Irgendwie müsste InstallShield doch davon zu überzeugen sein, dass jeder Vollzugriff aus die ini hat, oder?
Oder kann die Rechte aus meinem Programm heraus setzen (erster Start als Admin)?
|
|
highhatcompy
      
Beiträge: 190
Win2000,Win XP,Linux(SuSE9.2)
Delphi 5 Prof.
|
Verfasst: Mi 28.07.04 10:41
Hallo,
warum schreibst du das nicht in die Registry, ist einfachen unf moderner!?
Viele Grüße aus Thüringen
HHC
_________________ Bist Du ein Programmierer, so wirst Du gegen Computer, Hardwarehersteller und Anwender verlieren. (Quelle: Murphy's Computer-Gesetz)
|
|
O'rallY
      
Beiträge: 563
|
Verfasst: Mi 28.07.04 11:29
highhatcompy hat folgendes geschrieben: |
warum schreibst du das nicht in die Registry, ist einfachen unf moderner!?
|
Angesichts der totalen Vermüllung der Registry ist eine INI-Datei gar nicht mal die schlechteste Wahl.
@Peter2002 Wenn ich dich richtig verstanden habe, erzeugt die Installroutine eine ini-File auf die dann später dein Programm zugreifen soll, was allerdings mit benutzerrechten nicht funktioniert. Soweit richtig? Wo wird die INI gespeichert?
_________________ .oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Mi 28.07.04 11:29
Nun, wenn die User eben keine Schreibrechte auf die jeweiligen Dateien haben (bei uns in der Firma dürfen Normalo-User keine Datei ausserhalb ihres "Eigene Dateien"-Ordners bearbeiten), wird das Installshield auch nicht ändern können. Da muss dementsprechend eine Freigabe für die User erfolgen.
Cu,
Udontknow
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 28.07.04 11:33
Peter2002 hat folgendes geschrieben: | Mein Prog speichert sämtliche Einstellungen in ner ini-File. Wenn ich das nun auf nem anderen Rechner (WinXP) installiere (Admin) funktioniert es auch prima. Als User hab ich dann aber plötzlich keine Zugriffsreche auf meine eigene ini mehr! |
Dann ist es eine NTFS-Partition, und das wäre dann normal, weil du bei der Installation als Admin auch die Ordner als solcher angelegt hast.
Zitat: | Es kann dann ja wohl kaum sein, dass nach der Installation manuell die Rechte gesetzt werden müssen. Irgendwie müsste InstallShield doch davon zu überzeugen sein, dass jeder Vollzugriff aus die ini hat, oder? |
Es gäbe die Möglichkeit, mit einem Hilfsprogramm die Ordner-Rechte zu setzen. Aber: So greift jeder User auf die gleiche INI-Datei zu. Soll das so sein? Ich meine, sind das allgemeine Einstellungen, oder kann jeder User vllt. doch auch eigene Wünsche umsetzen. Als Beispiel: Ein Programm, das irgendwelche Daten anzeigt. User A bevorzugt es im Symbol-Stil (wie im Explorer->Große Symbole), User B mag dagegen die Detailansicht. Würde diese Einstellung in der INI im Programmordner gespeichert werden, dann würden sich die beiden in die Haare kriegen, weil der eine dem anderen die Einstellung "kaputt macht".
Du solltest die INI daher auch benutzerabhängig speichern. Einfachste Variante: der "Eigene Dateien"-Ordner. Etwas besser wäre der Ordner "Anwendungsdaten" (APPDATA), an den man auch OS- und sprach- unabhängig mit einer Shell-Funktion herankommt.
Ansonsten bleibt noch, wie highhatcompy schrieb, die Registry. Aber auch da solltest du dann in HKEY_CURRENT_USER speichern, denn bei HKEY_LOCAL_MACHINE hast du (ohne Admin-Rechte) das gleiche Problem wie mit der INI. 
|
|
Peter2002 
      
Beiträge: 103
Win XP, Win 7
Delphi 2007 / XE3
|
Verfasst: Mi 28.07.04 22:11
Hallo,
1. natürlich könnte ich das alles auch in die Registry schreiben. Da hätte ich aber das gleiche Problem...
2. Es ist beabsichtigt, dass alle User auf die gleiche INI zugreifen. Nur die Umsetzung ist leider das Problem
3. Die INI wird von der Installationsroutine erzuegt und liegt im Installationsordner.
Kann man Zugriffsreche im Rahmen der Installation irgendwie setzen?
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 28.07.04 23:24
Ja, wie gesagt: mit einem Hilfsprogramm. Ich persönlich verwende SetACL, das lässt sich bspw. in NSIS oder Inno Setup temporär aufrufen und danach wieder löschen. Und das gleiche Prinzip wirst du sicher auch für InstallShield nutzen können.
Du solltest aber nach Möglichkeit nicht den Programmordner zum Schreiben freigeben. Und auch nicht für Jeder. Immer daran denken: Was der User kann, kann auch ein Virus o.ä., der im gleichen Kontext gestartet wird. Lege am besten einen Ordner im Programmverzeichnis an, "data" oder "config" genannt, und gib nur den zum Schreiben frei. Das dürfte der sicherste Weg sein.
Ach so, vielleicht ein Wort zur Syntax. Um in meinem Setup den angelegten Ordner "users" für die Gruppe Benutzer zum Schreiben freizugeben, habe ich folgenden Befehl benutzt (NSIS-Setup):
Quelltext 1:
| ExecWait '"$INSTDIR\setacl.exe" users /dir /grant S-1-5-32-545 /write /sid' |
Die SID S-1-5-32-545 entspricht der Gruppe Benutzer. Solche Angaben sind sicherer als den Gruppennamen zu verwenden (immerhin gibt´s ja auch englischsprachige Windows-Versionen u.ä.). Du findest diese SIDs im MSDN/PSDK.
Die anderen Parameter werden auf der Seite (s. Link) erklärt.
|
|
Peter2002 
      
Beiträge: 103
Win XP, Win 7
Delphi 2007 / XE3
|
Verfasst: Fr 30.07.04 10:16
Dann bleibt ja nur noch die Frage, wie man das mit InstallShield macht.
Oder sollte ich da besser ein anderes Tool(NSIS oder Inno Setup) nutzen? Hätte ich da dann nicht ein Problem mit der BDE?
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 30.07.04 10:49
InstallShield wird sicher auch externe Programme starten können. Das kann eigentlich jeder mir bekannte Installer. Da müsstest du mal die Dokumentation zu Rate ziehen. Aber ich denke, dass das geht. ´s wäre ja ´n Ding, wenn nicht. 
|
|
Peter2002 
      
Beiträge: 103
Win XP, Win 7
Delphi 2007 / XE3
|
Verfasst: Fr 30.07.04 13:55
Ich nutze die Limited Edition, die bei D6 Ent. dabei ist. Hab da noch nix gefunden, werd aber heut abend nochmal schaun
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 31.07.04 01:26
highhatcompy hat folgendes geschrieben: | warum schreibst du das nicht in die Registry, ist einfachen unf moderner!? |
Es gibt Leute (wie mich), die es hassen, wenn jedes Programm immer in die Reg schreibt. INI geht auch gut und ist unter anderem auf NT-Systemen besser zu handhaben. Das einzige, wozu man die REG nutzen sollte, ist, um Systemeinstellungen zu speichern, keine Programmsettings, da jedes Schreiben in die Reg nur das System ausbremst (auf die Dauer).
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 31.07.04 16:26
BenBE hat folgendes geschrieben: | INI geht auch gut und ist unter anderem auf NT-Systemen besser zu handhaben. |
In wiefern? Gerade bei NT Systemen könnte es zu Problemen kommen, wenn ich die Ini im Programmverzeichnis ablege. Und da gerade NT ein Mehrbenutzersytem ist muss ich die Ini immer im HomeDir des Anwenders ablegen, damit sich die Benutzer ihre Einstellungen nicht überschreiben. Lege ich die Werte in der Registry unter HKCU ab, muss ich mich darum nicht kümmern, da jeder User seinen eigenen HKCU Zweig in der Registry hat.
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 31.07.04 19:12
Das Problem dabei ist, aber das gilt auch für den Profilordner, dass evtl. Daten bei der Deinstallation zurückbleiben. Logisch, weil ja meist der Admin das Programm entfernt und dann auch nur sein aktiver HKCU-Schlüssel berücksichtigt wird.
Aber als ich noch Delphi 7 hatte, habe ich in der Readme gelesen (Ja, so was mache ich  ) und auf der CD gesehen, dass Borland ein Tool mitlieferte, dass die Registryeinstellungen entfernt hat. Es musste eben nur vom Anwender gestartet werden.
So gesehen ist ein Ordner, in dem jeder [b]Benutzer[/i] Schreibrecht hat evtl. besser. Zumal man dann ja noch Unterordner anlegen kann (mit dem Namen des Benutzerkontos bspw.). Auf die Weise ist bei der Deinstallation alles am gleichen Ort (sprich: der Admin kann alles auf einen Schlag rauswerfen), und trotzdem könnte jeder User seine eigenen Einstellungen, Daten, usw. benutzen.
Und das Schreibrecht ist mit einem Programm wie dem o.g. SetACL nicht das Problem.
|
|
Peter2002 
      
Beiträge: 103
Win XP, Win 7
Delphi 2007 / XE3
|
Verfasst: Do 05.08.04 13:25
Cool, danke
Man nehme SetACL und InnoSetup, dann klappts
|
|
|