Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#8

Re: Andere Codevariante für Registryeintragung ??

  Alt 9. Jul 2004, 07:42
Wie wäre es denn mal mit Nachdenken? Ich meine, so schwer kann das doch nicht sein. Ansonsten, ohne dir zu nahe treten zu wollen, wäre ein Grundlagen-Tutorial oder -Buch vllt. besser. Wenn du dir das mal anschaust:
Zitat von Vader:
procedure Autostart(const fForAllUsers: boolean = true);
Standardmäßig steht der Parameter dieser Prozedur auf true. Wenn dein Englisch gut ist, dann müsste dir "fForAllUsers" sagen, dass es "für alle Benutzer" bedeutet. Soll heißen: das automatisch zu startende Programm soll (sofern möglich) generell starten, egal welcher Benutzer sich anmeldet.

Und das "sofern möglich" wird in dieser Zeile definiert:
Zitat:
    reg.RootKey := RootKey[IsAdmin and fForAllUsers];
Das bedeutet, nur wenn du lokaler Admin bist (die Funktion hast du inzwischen ja gefunden) und wenn der Parameter aus dem Funktionskopf auf "true" gesetzt ist, dann wird der Schlüssel HKEY_LOCAL_MACHINE benutzt. Das bezieht sich einfach auf dieses Array hier:
Zitat:
Delphi-Quellcode:
const
  RootKey : array[boolean]of HKEY =
    (HKEY_CURRENT_USER, // <-- FALSE
     HKEY_LOCAL_MACHINE // <-- TRUE);
Das heißt, wenn du kein Admin bist oder wenn du den Parameter im Prozedurkopf auf FALSE setzt und dann den Autostart möchtest, dann wird das Programm grundsätzlich in HKEY_CURRENT_USER eingetragen und startet daher nur, wenn du dich mit dem gleichen Benutzer anmeldest.

Edit: Ich hätte es auch mit if machen können, dann wäre es vllt. deutlicher gewesen:
Delphi-Quellcode:
if IsAdmin and fForAllUsers then
  reg.RootKey := HKEY_LOCAL_MACHINE
else
  reg.RootKey := HKEY_CURRENT_USER;
Das bool-Array macht also das gleiche wie diese if-Prüfung, nur dass du eben kein if/else benötigst.


Das ist das Geheimnis des Codes, und Ja: Mit der Funktion "IsAdmin" kannst du herausfinden ob du Admin-Rechte hast.
  Mit Zitat antworten Zitat