AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf Classes\CLSID

Ein Thema von venice2 · begonnen am 4. Jul 2020 · letzter Beitrag vom 5. Jul 2020
Antwort Antwort
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.869 Beiträge
 
Delphi 12 Athens
 
#1

AW: Zugriff auf Classes\CLSID

  Alt 4. Jul 2020, 17:57
Ich vermute einmal, dass die Rechte fehlen und OpenKey schlicht false zurück liefert. Den Rückgabewert ignorierst du leider komplett...

Es gibt stattdessen auch OpenKeyReadOnly, für das du weniger Rechte benötigst.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#2

AW: Zugriff auf Classes\CLSID

  Alt 4. Jul 2020, 18:06
Ich vermute einmal, dass die Rechte fehlen und OpenKey schlicht false zurück liefert. Den Rückgabewert ignorierst du leider komplett...

Es gibt stattdessen auch OpenKeyReadOnly, für das du weniger Rechte benötigst.
Ich ignoriere gar nichts denn ich habe nur das gepostet was im Context zu meiner Frage stand.
Werde es mal mit OpenKeyReadOnly versuchen.

Dann noch mal nicht geschrieben sondern eingefügt. (copy\paste)
Delphi-Quellcode:
            FilePath := 'SOFTWARE\Classes\CLSID\';
            if PRegKey.OpenKey(FilePath, False) then
            begin
              if PRegKey.HasSubKeys then
              begin
                PRegKey.GetKeyNames(subKeyFilePath);
                PRegKey.CloseKey;
              end;
            end;
funktioniert genau sowenig.
Wie komme ich sonst an die Pfade der DLL's ?

Geändert von venice2 ( 4. Jul 2020 um 18:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#3

AW: Zugriff auf Classes\CLSID

  Alt 4. Jul 2020, 20:53
Nur weil man die Rückgabewerte (teilweise) auswertet, funktioniert der Code nicht plörlich, wenn er auch Ohne bereits Fehler ausgelöst hatte und sich an der eigentlich Funktion garnichts geändert hat.

Wenn man aber die Rückgaben "richtig" auswerten würde, dann wüsste man wenigstens warum es nicht geht.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#4

AW: Zugriff auf Classes\CLSID

  Alt 4. Jul 2020, 20:56
Nur weil man die Rückgabewerte (teilweise) auswertet, funktioniert der Code nicht plörlich, wenn er auch Ohne bereits Fehler ausgelöst hatte und sich an der eigentlich Funktion garnichts geändert hat.

Wenn man aber die Rückgaben "richtig" auswerten würde, dann wüsste man wenigstens warum es nicht geht.
Richtig.
Nur es hilft mir leider nicht bei meinem Problem wie ich an den Pfad der DLL komme.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#5

AW: Zugriff auf Classes\CLSID

  Alt 4. Jul 2020, 21:13
Delphi-Quellcode:
FilePath := 'SOFTWARE\Classes\CLSID\';
if PRegKey.OpenKey(FilePath, False) then
begin

end
else
  RaiseLastOSError;
Und schon gelesen was die Anderen schrieben?

Wer möchte raten, was mit Close nach dem Open passiert, wenn es keine SubKeys gibt?
Zitat:
Delphi-Quellcode:
if PRegKey.OpenKey(FilePath, False) then
begin
  if PRegKey.HasSubKeys then
  begin
    ...
    PRegKey.CloseKey;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#6

AW: Zugriff auf Classes\CLSID

  Alt 4. Jul 2020, 21:20

und schon gelesen was die anderen schrieben?
Entschuldige.
Schon gelesen?
Zitat:
Ich ignoriere gar nichts denn ich habe nur das gepostet was im Context zu meiner Frage stand.
Es geht nicht darum ob ich einen Key schließe (was ich natürlich tue) sondern darum warum ich keinen Zugriff bekomme.
Ob ich dann RaiseLastOSError; auswerte ist doch eine ganz andere Geschichte.

Alles andere hat schon seine Richtigkeit.
Ich kann den Key nicht öffnen versuche es doch einfach einmal.
Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.609 Beiträge
 
Delphi 12 Athens
 
#7

AW: Zugriff auf Classes\CLSID

  Alt 4. Jul 2020, 21:58
Ich kann - mit einer marginalen Modifizierung deines Codes gemäß der Empfehlung von Sebastian:
Delphi-Quellcode:
      FilePath := 'SOFTWARE\Classes\CLSID\';
      if PRegKey.OpenKeyReadOnly(FilePath) then
      begin
        if PRegKey.HasSubKeys then
        begin
          PRegKey.GetKeyNames(subKeyFilePath);
          PRegKey.CloseKey;
        end;
      end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#8

AW: Zugriff auf Classes\CLSID

  Alt 5. Jul 2020, 02:05
Ich ignoriere gar nichts denn ich habe nur das gepostet was im Context zu meiner Frage stand.
... sondern darum warum ich keinen Zugriff bekomme.[/QUOTE]

OK, dann bin ich mal weg.

Entweder du willst wissen warum es nicht geht oder nicht, aber wenn nicht, dann heul nicht rum.

Delphi-Quellcode:
if PRegKey.OpenKey(...

else
  WriteLn(PRegKey.LastErrorMsg); //RaiseLastOSError(PRegKey.LastError);
Ich bekomme da erstmal das Wichtigste bei raus.
* Zugriff verwigert
* Pfad nicht gefunden
* Pfad ungültig
* ...

Bei Ersterem geh ich dann in den Registryeritor und schau mit dir Berechtigungen an
z.B. HKEY_LOCAL_MACHINE\SOFTWARE : Admin=Vollzugriff und Benutzer=NurLesen

Und falls du grade mit etwas anderem als Admin oder Benutzer unterwegs bist, dann können wir das nicht wissen, es sei denn jemand sagt etwas.


Zitat:
Es geht nicht darum ob ich einen Key schließe (was ich natürlich tue)
Nein, du machst es nicht immer.
Nja, es kommt auch drauf an warum man es wann macht.

In deinem Fall wird es dort nur gemacht, damit es beim nächsten OpenKey nicht knallt, was man dann schon besser mal als Kommentar dahinter schreiben sollte, sonst weiß es niemand.
OK, da TRegistry mit relativen Pfaden arbeitet, wäre es vielleicht stattdessen "logischer" mit absuluten Pfadangaben zu arbeiten, wenn man diese übergibt.


Ob EXE oder DLL ist total egal, denn der Prozess, bzw. der Thread hat die Rechte und wo der Code ausgeführt wird interessiert niemanden. (außer vielleicht jemand kommt auf die Idee sowas z.B. in einem Virenscanner einzubauen, aber bis jetzt noch nicht)


Und ja, bei mir wird das Verzeichnis problemlos ausgelesen,
außer dass es anschließend das {43D2E184-46AC-11d4-A8AF-00105AC582C2} hier nicht gibt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Jul 2020 um 02:35 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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:59 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 by Thomas Breitkreuz