AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Kann Registry-Werte nicht auslesen!

Kann Registry-Werte nicht auslesen!

Ein Thema von max666 · begonnen am 26. Apr 2005 · letzter Beitrag vom 26. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2   
max666

Registriert seit: 21. Dez 2003
50 Beiträge
 
#1

Kann Registry-Werte nicht auslesen!

  Alt 26. Apr 2005, 11:13
Hallo!

Ich habe ein kleines Programm geschrieben, welches unter Administrator-Rechten super läuft. Wenn ich das Programm mit einem User mit eingeschränken Rechten laufen lasse, kann das Programm folgende Registry-Werte nicht mehr lesen. Diese Werte sind aber wichtig, damit das Programm die Konfikurationsdatein findet.

Hat jemand eine Idee!

Gruß
max666


Delphi-Quellcode:
function tform1.getpath(i: integer): string;
var regist: TRegistry;
    path: string;
begin
regist:=TRegistry.Create;
regist.RootKey:=HKEY_CURRENT_USER;
regist.OpenKey('Software\meinprog', false);
if i=1 then path:=regist.ReadString('work-dir') + 'start.ini';
if i=2 then path:=regist.ReadString('work-dir');
if i=3 then path:=regist.ReadString('work-dir') + 'button_1.ini';
if i=4 then path:=regist.ReadString('work-dir') + 'button_2.ini';
regist.CloseKey;
regist.Free;
result:=path;
end;
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#2

Re: Kann Registry-Werte nicht auslesen!

  Alt 26. Apr 2005, 11:15
Zitat von max666:
regist.RootKey:=HKEY_CURRENT_USER;
Dieser Zweig der Registry ist benutzer-bezogen. Bist Du sicher, dass die Werte bei dem Benutzer überhaupt in der Registry vorhanden sind?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.115 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Kann Registry-Werte nicht auslesen!

  Alt 26. Apr 2005, 11:22
Moin Max,

mir fallen da noch ein paar Dinge auf:

Zum einen solltest Du die Freigabe des Registry-Objektes mit try/finally sicherstellen.
OpenKey gibt Dir zurück (true oder false), ob der Aufruf erfolgeich war, falls nicht gibt es auch keinen Key zu schliessen, falls ja, solltest Du das Schliessen auch absichern.
Deine If-Zeilen könntest Du als case-Anweisung darstellen.
Path wird nicht initialisiert, aber, in jedem Falle Result zugwiesen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
max666

Registriert seit: 21. Dez 2003
50 Beiträge
 
#4

Re: Kann Registry-Werte nicht auslesen!

  Alt 26. Apr 2005, 11:25
Hallo!

Ja, die Einträge existrieren!
Aber was meinst Du mit "benutzer-bezogen"?
  Mit Zitat antworten Zitat
max666

Registriert seit: 21. Dez 2003
50 Beiträge
 
#5

Re: Kann Registry-Werte nicht auslesen!

  Alt 26. Apr 2005, 11:27
Path könnte ich initialisieren und eine Case-Anweisung könnte ich auch verwenden.
Nur leider hilft mir das nicht weiter, warum die Werte unter Benutzer mit eingeschränkten Rechten nicht gelesen werden.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.115 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Kann Registry-Werte nicht auslesen!

  Alt 26. Apr 2005, 11:34
Moin Max,

Benutzer bezogen meint, dass HKEY_CURRENT_USER bei jedem Anwender anders aussehen kann.

Wenn die Einträge wirklich existieren kannst Du ja mal versuchen statt OpenKey OpenKeyReadOnly zu verwenden, oder die Eigenschaft Access (ich glaube die heisst so, hab' gerade kein Delphi zur Hand) auf KEY_READ setzen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#7

Re: Kann Registry-Werte nicht auslesen!

  Alt 26. Apr 2005, 11:35
Zitat von max666:
Aber was meinst Du mit "benutzer-bezogen"?
Das jeder Benutzer in diesem Zweig eine eigene Registry hat.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#8

Re: Kann Registry-Werte nicht auslesen!

  Alt 26. Apr 2005, 11:36
Oder:
reg := TRegistry.Create(KEY_READ);
  Mit Zitat antworten Zitat
max666

Registriert seit: 21. Dez 2003
50 Beiträge
 
#9

Re: Kann Registry-Werte nicht auslesen!

  Alt 26. Apr 2005, 11:43
Hallo!

Jetzt habe ich dort folgendes stehen:

Delphi-Quellcode:
function tform1.getpath(i: integer): string;
var regist: TRegistry;
    path: string;
    janein: Boolean;
begin
path:='';
//regist:=TRegistry.Create;
regist := TRegistry.Create(KEY_READ);
regist.RootKey:=HKEY_CURRENT_USER;
janein:=regist.OpenKeyReadOnly('Software\meinprog');
if janein=true then showmessage('ja') else showmessage('Nein');
if i=1 then path:=regist.ReadString('work-dir') + 'start.ini';
if i=2 then path:=regist.ReadString('work-dir');
if i=3 then path:=regist.ReadString('work-dir') + 'button_1.ini';
if i=4 then path:=regist.ReadString('work-dir') + 'button_2.ini';
regist.CloseKey;
regist.Free;
result:=path;
end;
Es wird mir auch gesagt, dass der Schlüssel existiert. Nur der Wert "work-dir" wird nicht gelesen.

Gruß
MAx666
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#10

Re: Kann Registry-Werte nicht auslesen!

  Alt 26. Apr 2005, 11:51
Mal unabhängig von irgendwelchen anderen Dingen: Bitte benutze try/finally bzw. try/except. Das wird zwar dein Problem nicht lösen, aber es gehört sich einfach so.

Ansonsten: Dass der Schlüssel existiert, heißt ja nicht, dass auch der Wert existiert. Oder kannst du das als Fehler definitiv ausschließen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz