Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Programm läuft nur unter Administrator richtig??? (https://www.delphipraxis.net/44610-programm-laeuft-nur-unter-administrator-richtig.html)

max666 21. Apr 2005 16:14


Programm läuft nur unter Administrator richtig???
 
Hallo!

Ich bin Programmierneuling und habe mich mit drei neuen Themen beschäftigt. Es geht also nur darum, den Umgang mit den folgenden drei Themen zu erlernen.

1. Daten in eine Ini-Datei speichern und lesen.
2. Registry-Einträge schreibe und lesen.
3. Die Konfiguration von Innosetup.

Ich habe ein ganz kleines und einfaches Datenbank-Programm geschrieben, bei dem Datensätze in eine Ini-Datei gespeichert und auch wieder geladen werden können.

Das Programm kann man auch einwenig konfigurieren. Diese Konfigurations-Daten werden in die Registry im Installationsverzeichnis des Programms gespeichert.

Aus dem Programm habe ich eine Installationsversion gemacht und den ganzen Schmodder auf zwei Rechner von mir installiert.

Das ganze funz wunderbar. Ich kann Datensätze speichern, lesen und Konfigurationsänderungen vornehmen.
Aber nur solange, wie ich in Administrator-Modus arbeite. Wenn ich mich als Gast mit eingeschränken Zugriffsrechten anmelde, kann ich in die Ini-Datei keine Daten lesen und schreiben und Konfigurationsänderungen sind auch nicht mehr möglich.

Jetzt gibt es aber viele Programme, die unter der zweiten Voraussetzung (eingeschränkter Zugriff) dennoch sauber laufen.

Hat jemand eine Idee, warum andere Programm auf Ini-Datein und die Registry zugreifen können, obwohl man eingeschränkte Zugiffsrechte besitzt???

Gruß aus dem Emsland
Max666

arbu man 21. Apr 2005 16:18

Re: Programm läuft nur unter Administrator richtig???
 
Wahrscheinlich speicherts du in der Registry im rootKey Local_machine das geht aber nur mit admin rechten du musst deswegen im rootkey current_user speichern

Waldteufel 21. Apr 2005 16:20

Re: Programm läuft nur unter Administrator richtig???
 
Hi.

Zu der Sache mit der Ini-Datei:

Als eingeschränkter Benutzer hat man keine Schreibrechte auf C:\Programme! Lege die Ini-Datei also besser unter C:\Dokumente und Einstellungen\meinprogramm.ini ab ;-)

Bernhard Geyer 21. Apr 2005 16:21

Re: Programm läuft nur unter Administrator richtig???
 
Zitat:

Zitat von max666
Das Programm kann man auch einwenig konfigurieren. Diese Konfigurations-Daten werden in die Registry im Installationsverzeichnis des Programms gespeichert.

Was nun? Registry oder im Installationsverzeichnis? Und wo in der Registry (HKEY_CURRENT_USER/HKEY_LOCAL_MACHINE)?
Unter HKEY_LOCAL_MACHINE haben nur Admins schreibrechte!

Zitat:

Zitat von max666
Aber nur solange, wie ich in Administrator-Modus arbeite. Wenn ich mich als Gast mit eingeschränken Zugriffsrechten anmelde, kann ich in die Ini-Datei keine Daten lesen und schreiben und Konfigurationsänderungen sind auch nicht mehr möglich.

Wo liegen die Ini-Dateien?
Etwas (problematischer) Code wäre hilfreich. Meine Glaskugel ist gerade in der jährlichen Inspektion. :-)

max666 21. Apr 2005 16:36

Re: Programm läuft nur unter Administrator richtig???
 
Hallo!

Unter HKEy_LOCAL_MACHINE wird in der Registry abgespeichert
und das Installationsverzeichnis befindet sich unter /Programm

Wo soll ich am besten die Registry einträge vornehmen?

Gruß
max666

Waldteufel 21. Apr 2005 16:45

Re: Programm läuft nur unter Administrator richtig???
 
Hi.

Zitat:

Zitat von max666
Wo soll ich am besten die Registry einträge vornehmen?

Unter HKEY_CURRENT_USER.

alcaeus 21. Apr 2005 16:50

Re: Programm läuft nur unter Administrator richtig???
 
Hallo max666,

hier mal ein paar Grundlegende "Richtlinien" fuer die Verwendung von Programmen unter Windows:
  • Programme sollen installiert werden koennen, wo man will.
  • Die Einstellungen sollen wenn moeglich nicht in der Registry abgespeichert werden.
  • Falls die Einstellungen in die Registry sollen, dann in HKCU.
  • Falls die Einstellungen in INI-Dateien abgespeichert werden, dann immer in "C:\Dokumente und Einstellungen\<User>\AnwendungsDaten". Diesen Pfad bekommst du ueber die Umgebungsvariablen, einfach mal suchen.
  • INI-Dateien, in welche nicht geschrieben werden soll, koennen auch im Programmverzeichnis landen.
  • Generell gilt: ein Programm immer mind. einmal als eingeschraenkter Benutzer auf Funktionalitaet pruefen.
Halte dich an diese paar "Regeln", und du wirst (fast) keine Probleme haben :)

Greetz
alcaeus

max666 21. Apr 2005 17:09

Re: Programm läuft nur unter Administrator richtig???
 
Hallo!

Echt super von euch!

Habe mein kleines Programm bereits umgeschrieben.
Jetzt klappt es!

Danke für die sehr schnellen und qualifizierten Antworten.

Gruß
MAx666

MathiasSimmack 21. Apr 2005 17:26

Re: Programm läuft nur unter Administrator richtig???
 
Zitat:

Zitat von alcaeus
hier mal ein paar Grundlegende "Richtlinien" fuer die Verwendung von Programmen unter Windows:
  • Programme sollen installiert werden koennen, wo man will.

Wenn du von einer Installation sprichst, dann gibt es eigene Richtlinien und eben kein "wo man will".

Zitat:

  • Die Einstellungen sollen wenn moeglich nicht in der Registry abgespeichert werden.

Sagst du. Nicht Microsoft. :stupid:

Zitat:

  • Falls die Einstellungen in INI-Dateien abgespeichert werden, dann immer in "C:\Dokumente und Einstellungen\<User>\AnwendungsDaten". Diesen Pfad bekommst du ueber die Umgebungsvariablen, einfach mal suchen.

Besser wäre eine [dp="CSIDL_APPDATA"]Shell[/dp]-Funktion, da Umgebungsvariablen nicht zwangsläufig unter allen Windows-Versionen vorhanden sind.

Waldteufel 21. Apr 2005 17:28

Re: Programm läuft nur unter Administrator richtig???
 
Hi.

Zitat:

Zitat von MathiasSimmack
Zitat:

Zitat von alcaeus
hier mal ein paar Grundlegende "Richtlinien" fuer die Verwendung von Programmen unter Windows:
  • Programme sollen installiert werden koennen, wo man will.

Wenn du von einer Installation sprichst, dann gibt es eigene Richtlinien und eben kein "wo man will".

Und wenn ich das Programm nach F:\Editoren\Notepad\ anstatt C:\Programme\Microsoft\Notepad\ installieren will? :roll:

//edit: Tippfehler...

MathiasSimmack 21. Apr 2005 17:31

Re: Programm läuft nur unter Administrator richtig???
 
Der Pfad "Programme\Microsoft" ist ja kein Zwang, nur weil das Programm Notepad heißt. :roll: Aber die Regel ist nun mal die, dass tatsächlich ein Ordner innerhalb von "Programme" als Standardziel angeboten wird. Dass der User diese Vorgabe ändern kann, gehört zu den selben Richtlinien, die ich erwähnt habe. Aber nett, dass du dich gemeldet hast.

Bernhard Geyer 21. Apr 2005 19:47

Re: Programm läuft nur unter Administrator richtig???
 
Zitat:

Zitat von MathiasSimmack
Zitat:

  • Die Einstellungen sollen wenn moeglich nicht in der Registry abgespeichert werden.

Sagst du. Nicht Microsoft. :stupid:

Mit .NET sagt das auch Microsoft. Unter .NET ist die Registry "böse" ( :???:) und alles sollte unter Configurationsdateien abgelegt werden ("Ini-Dateien im XML-Format"). Aber der Speicherort sollte nicht das Anwendungsverzeichnis sein (u.a. wg. Rechten).

MathiasSimmack 22. Apr 2005 08:35

Re: Programm läuft nur unter Administrator richtig???
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von MathiasSimmack
Zitat:

  • Die Einstellungen sollen wenn moeglich nicht in der Registry abgespeichert werden.

Sagst du. Nicht Microsoft. :stupid:

Mit .NET sagt das auch Microsoft.

Das stimmt. Für .NET gilt ja sogar die Regel (sofern man sie so nennen kann), dass ein Setup nicht unbedingt erforderlich ist. Ich habe bei Andreas Kosch (glaube ich :gruebel:) mal was von "XCopy"-Regel o.ä. gelesen. Frei aus dem Gedächtnis: Es soll möglich sein, ein Programm irgendwo hin zu kopieren und zu starten.

Aber, wie gesagt, das ist .NET. :) Im Fall von Win32 sind in 99% aller Setups ohnehin Admin- bzw. Hauptbenutzerrechte notwendig, damit der Uninstall-Schlüssel in HKLM angelegt werden kann. Die Alternative wäre, auf diesen Schlüssel zu verzichten, aber dann entspricht das Setup, AFAIK, nicht mehr diesen Logo-Richtlinien von Microsoft.

Robert Marquardt 22. Apr 2005 10:58

Re: Programm läuft nur unter Administrator richtig???
 
Hier noch ein paar Regeln mehr:

Wer einen Eintrag im Startmenü anlegt, der sollte es konfigurierbar machen, also nicht automatisch <Programme>\mein Programm.
Falls es ein Programm fuer mehrere Benutzer ist, dann abfragen ob Startmenü für alle Benutzer oder nur für aktuellen Benutzer.
Ebenfalls Desktop-Icons, Startleisteneinträge etc auch nur auf Verlangen anlegen.

Einer der schlimmsten Regelbrecher ist Microsoft selbst.

Sebastian Nintemann 22. Apr 2005 11:34

Re: Programm läuft nur unter Administrator richtig???
 
Zitat:

Zitat von Robert Marquardt
Ebenfalls Desktop-Icons, Startleisteneinträge etc auch nur auf Verlangen anlegen.

Gibt es eigentlich bezüglich Programmen die bei Systemstart gestartet werden sollen einen bevorzugten Ort?
Ich persönlich finde es am einfachsten und angenehmsten wenn sich die Programme einfach in den Autostart Ordner schreiben. Oder gilt der auch schon als veraltet? Es gibt ihn doch soweit ich weiß unter allen Windows-Versionen (um mal zum Kernthema zurück zu kommen).

Viele Grüße, Sebastian

Waldteufel 22. Apr 2005 11:37

Re: Programm läuft nur unter Administrator richtig???
 
Hi.

Zitat:

Zitat von Sebastian Nintemann
Zitat:

Zitat von Robert Marquardt
Ebenfalls Desktop-Icons, Startleisteneinträge etc auch nur auf Verlangen anlegen.

Gibt es eigentlich bezüglich Programmen die bei Systemstart gestartet werden sollen einen bevorzugten Ort?
Ich persönlich finde es am einfachsten und angenehmsten wenn sich die Programme einfach in den Autostart Ordner schreiben. Oder gilt der auch schon als veraltet? Es gibt ihn doch soweit ich weiß unter allen Windows-Versionen (um mal zum Kernthema zurück zu kommen).

Man kann auch in der Registry in die Run oder RunOnce-Schlüssel schreiben. Aber Autostart finde ich auch am praktischsten.

Robert Marquardt 22. Apr 2005 13:14

Re: Programm läuft nur unter Administrator richtig???
 
Autostart ist gut. Auch dieser Ordner ist lokalisiert, daher muss man den Namen von Windows erfragen.
Alternativ nimmt man einen der Run-Eintraege in der Registry. Diese lassen sich vom normalen unbedarften Benutzer
nicht so leicht loeschen.

Generell ist die Strategie zum Entfernen der Eintraege per Programmoption die wichtigte Sache dabei.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 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