Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Daten aus der Registry lesen ..... (https://www.delphipraxis.net/189669-daten-aus-der-registry-lesen.html)

bernhard_LA 7. Jul 2016 11:25

Daten aus der Registry lesen .....
 
wir verwenden folgendes "Code template" um eine Vielzahl von Programm Optionen in der Registry abzuspeichern.

Delphi-Quellcode:
const

  RegistryRootKey = HKEY_CURRENT_USER;


......
  Reg := TRegistry.Create;
  try
    Reg.RootKey := RegistryRootKey;
    Reg.OpenKey(NewRegistryPath, true);
    try
      result := Reg.Read....... ;
    except
      result := false;
    end;
    Reg.CloseKey;
  finally
    Reg.Free;
  end;

Das ganze funktioniert auf einer Vielzahl von Rechneren auch ohne Probleme. Allerdings gibt es Rechner bei denen wenn sich Benutzer A anmeldet alles klappt und dann beim Benutzer B ist der Zugriff auf die Daten in der Registry nicht möglich. Mit RegEdit sehe ich aber auch beim Benutzer B die richtigen Daten.

What to do ?????

mm1256 7. Jul 2016 11:51

AW: Daten aus der Registry lesen .....
 
Mach ich auch so ähnlich, ausser, dass ich beim Lesen OpenKeyReadOnly() verwende. Hilft dir zwar jetzt nicht direkt weiter, aber einen Versuch wäre es vielleicht wert. Das Problem hatte ich jedenfalls noch nicht.

DeddyH 7. Jul 2016 12:04

AW: Daten aus der Registry lesen .....
 
Ich würde auch vorschlagen, entweder OpenKeyReadOnly zum reinen Lesen zu verwenden, oder eine Zeile einmal testhalber abzuändern:
Delphi-Quellcode:
Reg := TRegistry.Create(KEY_READ);

Der schöne Günther 7. Jul 2016 12:16

AW: Daten aus der Registry lesen .....
 
"RegEdit" verweist beim Benutzer auf die passende 32/64-Bit exe. Wenn du auf einem 64-Bit-System "regedit.exe" aufrufst ist das was deine 32 Bit-Anwendung unter
HKCU\Software\myStuff sieht in regedit allerdings unter
HKCU\Software\Wow6432Node\myStuff zu finden.

Siehe: https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Du kannst bei deinem TRegistry-Objekt explizit sagen dass du den 64-Bit-View möchtest, soweit existent.

Dalai 7. Jul 2016 13:37

AW: Daten aus der Registry lesen .....
 
@Günther: Nope, HKCU\Software ist nicht umgeleitet/redirected, im Gegensatz zu HKLM\Software.

MfG Dalai

bernhard_LA 7. Jul 2016 13:40

AW: Daten aus der Registry lesen .....
 
32 bit / 64 bit Unterschiede würde ich ausschließen als Fehlerursache .
Ich habe für beide WIN 7 (X32) und WIN 7 (x64) fehlerfrei laufende Installation.

Auf WIN 7 (X 64) laufen auch nur X 64 compilierte Versionen unserer Anwendung

rapante 7. Jul 2016 14:06

AW: Daten aus der Registry lesen .....
 
Liegt es u.U. an den Benutzerrechten?
Was ist wenn du dein Programm als Admin startest?

bernhard_LA 7. Jul 2016 14:33

AW: Daten aus der Registry lesen .....
 
Admin Start von Programmen ist definitiv gesperrt für den user B auf einem Rechner. Aber HKEY_current_user sollte ja genau deshalb ohne Admin Right lesen und schreiben erlauben; Es gibt ja auch Beispiele wo es in dieser Config auch für user B funktioniert.

rapante 7. Jul 2016 14:52

AW: Daten aus der Registry lesen .....
 
Ja schon klar, dass das normalerweise so funktioniert. Aber es klappt ja bei dir auf einigen PCs nicht. So könntest du erstmal schauen ob es mit den Rechten zusammenhängt.
Wie sehen denn die Berechtigungen von HKCU aus?

Dalai 7. Jul 2016 14:58

AW: Daten aus der Registry lesen .....
 
Ich schließe mich Otto und Detlef an: Schlüssel nur lesend öffnen, denn genau das tut RegEdit auch, solange man keine Werte ändert.

MfG Dalai

rapante 7. Jul 2016 15:06

AW: Daten aus der Registry lesen .....
 
Zitat:

Zitat von Dalai (Beitrag 1342172)
Ich schließe mich Otto und Detlef an: Schlüssel nur lesend öffnen, denn genau das tut RegEdit auch, solange man keine Werte ändert.

Dann kann man dann aber nicht reinschreiben ;)

Zitat:

Zitat von bernhard_LA (Beitrag 1342145)
wir verwenden folgendes "Code template" um eine Vielzahl von Programm Optionen in der Registry abzuspeichern.


Dalai 7. Jul 2016 15:13

AW: Daten aus der Registry lesen .....
 
Zitat:

Zitat von rapante (Beitrag 1342175)
Dann kann man dann aber nicht reinschreiben ;)

Klar, zum Schreiben der Werte muss der Schlüssel auch schreibend geöffnet werden. Aber im OP lese ich nur Code, der aus der Registry liest, den Schlüssel aber trotzdem schreibend öffnet.

Mir ist derzeit unklar, ob das Lesen und/oder das Schreiben nicht funktioniert. Daher mein Tip, erstmal nur lesend zu probieren, zusätzlich zu deinem richtigen Hinweis, nach den Zugriffsrechten zu schauen.

MfG Dalai

p80286 7. Jul 2016 20:45

AW: Daten aus der Registry lesen .....
 
Die Fragestellung ist nicht so ganz klar (Hervorhebungen und Kürzungen von mir)
Zitat:

Zitat von bernhard_LA (Beitrag 1342145)
wir verwenden folgendes "Code template" um eine Vielzahl von Programm Optionen in der Registry abzuspeichern.

Delphi-Quellcode:
const

    try
      result := Reg.Read....... ;

.. Benutzer A anmeldet alles klappt und dann beim Benutzer B ist der Zugriff auf die Daten in der Registry nicht möglich. Mit RegEdit sehe ich aber auch beim Benutzer B die richtigen Daten.

Was funktioniert denn nun nicht, und woran erkennt man, daß etwas nicht funktioniert? (Fehlermeldung?)

Gruß
k-h

bernhard_LA 8. Jul 2016 21:09

AW: Daten aus der Registry lesen .....
 
ich frage jetzt auch noch die Ergebnisse von OpenKey und Keyexist ab.


Delphi-Quellcode:
   
    ...
    result := Reg.KeyExists(RegistryPath);
    ..

    bzw.

    .......
    result := Reg.OpenKey(RegistryStringPath, true);
lt. Auswertung kann ich die Registry Werte auch auf den FAIL-Systemen lesen, nur kommen halt leider keine Daten damit als Folge bekommt meine Anwendung Probleme ......

Dalai 8. Jul 2016 21:26

AW: Daten aus der Registry lesen .....
 
Irgendwie widerspricht sich das. Entweder du kannst Daten lesen oder eben nicht. Was machst du mit dem result? Und da du offenbar ein aktuelles Delphi hast, solltest du Delphi-Referenz durchsuchenTRegistry.LastError prüfen, welcher Fehler genau aufgetreten ist.

MfG Dalai

jaenicke 9. Jul 2016 22:34

AW: Daten aus der Registry lesen .....
 
Wie so oft weiße ich einmal auf den Process Monitor hin. Der zeigt dir sofort wo das Problem liegt...

Du musst im Filter lediglich auf Process Name is DeineExe.exe filtern. Und ggf. noch Path begins with und der Pfad in der Registry.

Dann siehst du genau worauf zugegriffen wird und was nicht klappt.

bernhard_LA 13. Jul 2016 21:29

AW: Daten aus der Registry lesen .....
 
Liste der Anhänge anzeigen (Anzahl: 1)
diesen process monitor : https://technet.microsoft.com/de-de/...ssmonitor.aspx ?

ich filtere auf den Pfad meiner Applikation, allerdings ist jeder EVENT vom Ergebnis SUCCESS bis auf eine Ausnahme

jaenicke 14. Jul 2016 04:24

AW: Daten aus der Registry lesen .....
 
Den meinte ich, ja.

Wenn du allerdings wirklich auf den Pfad deiner Anwendung gefiltert hast (Filter auf Path eingestellt), wundert es mich nicht, dass du keinen Fehler gefunden hast. Denn dann bekommst du nur die Zugriffe auf Dateien im Pfad deiner Anwendung zu sehen. Was du eigentlich willst ist aber die Liste der Zugriffe durch deine Anwendung.

Deshalb habe ich ja geschrieben, dass du auf den Prozessnamen filtern solltest.

Du kannst auf den bisherigen Filtereintrag einfach doppelklicken um diesen zu ändern.

bernhard_LA 14. Jul 2016 07:32

AW: Daten aus der Registry lesen .....
 
Liste der Anhänge anzeigen (Anzahl: 1)
mit dem Filter auf der Anwendung finde ich nur einen Fehler (siehe screen dump) :


er kann den DNS Client nicht auflösen, was hat dieses Thema mit einem fehlerhaften Zugriff auf die Registry zu schaffen. Das Log File zwischen einem PASS Computer und einem Fail Computer ist identisch, folglich kann man den fehler vermutlich nicht mit dem process Monitor austesten.

Weitere Ideen ?

bernhard_LA 24. Aug 2016 12:20

AW: Daten aus der Registry lesen .....
 
das Problem ist leider noch immer nicht gelöst. Hier ein anderer Effekt :

anderer Nutzer , anderer PC ( Laptop, WIN 7 Prof, Delphi XE2, XE8 installiert ) ;

a) Anwendung im Compiler gestartet, Problem tritt auf -> Benutzer ärgert sich ....

b) Anwendung mehrfach neu Compilieren / Erzeugen -> nicht mitgeschrieben wie oft

c) zwischenzeitlich auch mal "bereinigen" ausgeführt

d) noch ein paar mal neu übersetzten

f) Programm starten, alles funktioniert bestens .....


und nun, wo könnte der wahre Fehler liegen ????:shock:

Pixel 25. Aug 2016 00:48

AW: Daten aus der Registry lesen .....
 
Zitat:

Zitat von bernhard_LA (Beitrag 1345617)
das Problem ist leider noch immer nicht gelöst. Hier ein anderer Effekt :

anderer Nutzer , anderer PC ( Laptop, WIN 7 Prof, Delphi XE2, XE8 installiert ) ;

a) Anwendung im Compiler gestartet, Problem tritt auf -> Benutzer ärgert sich ....

b) Anwendung mehrfach neu Compilieren / Erzeugen -> nicht mitgeschrieben wie oft

c) zwischenzeitlich auch mal "bereinigen" ausgeführt

d) noch ein paar mal neu übersetzten

f) Programm starten, alles funktioniert bestens .....


und nun, wo könnte der wahre Fehler liegen ????:shock:

Benutz doch einfach die Windows-API. Da bekommst du dann jeden erdenkbaren Fehler zurück und kannst so herausfinden was schiefläuft!

einbeliebigername 25. Aug 2016 10:32

AW: Daten aus der Registry lesen .....
 
Hallo,

Zitat:

Zitat von bernhard_LA (Beitrag 1345617)
das Problem ist leider noch immer nicht gelöst.

habe ich das richtig verstanden, dass alle Aufrufe der Registry-Methoden erfolg melden aber die gelesenen Werte nicht stimmen?

Einbeliebigername.


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