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
Seite 1 von 4  1 23     Letzte »    
venice2
(Gast)

n/a Beiträge
 
#1

Zugriff auf Classes\CLSID

  Alt 4. Jul 2020, 17:14
Ich mache folgendes.

Delphi-Quellcode:
PRegKey.RootKey := HKEY_LOCAL_MACHINE;
FilePath := 'SOFTWARE\Classes\CLSID';
PRegKey.OpenKey(FilePath, False);

if PRegKey.HasSubKeys then
begin
  PRegKey.GetKeyNames(subKeyFilePath);
  PRegKey.CloseKey;
end;
Man geht eigentlich davon aus CLSID jede menge an SubKeys zur verfügung stellt.
Nur warum werden diese nicht mit PRegKey.HasSubKeys erkannt?

Gibt es hier einen Trick den ich anwenden muss um Zugriff zu bekommen?
Eigentlich sollte der gewährt sein beim lesen.

Nebenbei.
Kann man überhaupt eine ActiveX DLL mit FreeLibrary freigeben?
Falls nicht dann kann ich mir das sparen.

Geändert von venice2 ( 4. Jul 2020 um 17:37 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Zugriff auf Classes\CLSID

  Alt 4. Jul 2020, 17:55
Hallo,
das geht doch nur ReadOnly?
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#3

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
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#4

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.069 Beiträge
 
Delphi 12 Athens
 
#5

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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#6

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.069 Beiträge
 
Delphi 12 Athens
 
#7

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;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#8

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.453 Beiträge
 
Delphi 12 Athens
 
#9

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
venice2
(Gast)

n/a Beiträge
 
#10

AW: Zugriff auf Classes\CLSID

  Alt 4. Jul 2020, 22:06
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;
Nun dann öffnest du den Key mit Adminrechten denn bei mir geht es nicht.
Gleicher Code. (Ich öffne den Key in einer DLL, vergessen zu sagen)

Auch nicht mit 'SOFTWARE\Classes\Wow6432Node\CLSID';

EDIT.
bzgl. OpenKeyReadOnly und OpenKey
Zitat:
Just use OpenKey instead of OpenKeyReadOnly, this won't reset your Access property.
siehe

Nochmal komplett. Ohne PRegKey.CloseKey; wird aber verwendet

Delphi-Quellcode:
PRegKey := TRegistry.Create(KEY_READ);
PRegKey.RootKey := HKEY_LOCAL_MACHINE;
            
FilePath := 'SOFTWARE\Classes\Wow6432Node\CLSID'; // ob ich direkt auf Wow6432Node gehe oder nicht sollte eigentlich egal sein.
if PRegKey.OpenKey(FilePath, False) then
  begin
    if PRegKey.HasSubKeys then
    begin
      PRegKey.GetKeyNames(subKeyFilePath);
      PRegKey.CloseKey;
    end;
end;

Geändert von venice2 ( 4. Jul 2020 um 22:27 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 12:02 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