Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Ist Dateiendung registriert? Rechteproblem. (https://www.delphipraxis.net/173500-ist-dateiendung-registriert-rechteproblem.html)

Neutral General 28. Feb 2013 11:28

Ist Dateiendung registriert? Rechteproblem.
 
Hallo,

Ich habe mir eine function gebaut mit der ich prüfe ob eine bestimmte Dateiendung mit einem Programm verknüpft ist. Es geht nicht darum das Programm selbst rauszufinden sondern nur ob die Datei generell geöffnet werden kann.

Delphi-Quellcode:
function isFileExtensionRegistered(AFileExt: String): Boolean;
var reg: TRegistry;
begin
  if AFileExt[1] <> '.' then
    AFileExt := '.' + AFileExt;

  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_CLASSES_ROOT;
    Result := reg.OpenKey(AFileExt, false);
    if Result then
      reg.CloseKey;
  finally
    reg.Free;
  end;
end;
Das Problem ist, dass diese Funktion scheinbar Adminrechte benötigt. Gibt es da eine Art dies zu erreichen ohne dass mein Programm sofort Adminrechte benötigt?

Dalai 28. Feb 2013 11:32

AW: Ist Dateiendung registriert? Rechteproblem.
 
OpenKey öffnet einen Registry-Schlüssel immer mit Schreibzugriff, sofern man das nicht gezielt verhindert. Mögliche Lösungen:
  • TRegistry.OpenKeyReadOnly statt TRegistry.OpenKey verwenden
  • TRegistry.Access vor dem Aufruf von OpenKey passend setzen, wobei ich jetzt grad nicht weiß, ob die Methode OpenKey zu denjenigen gehört, die dieses Property ignorieren

MfG Dalai

lbccaleb 28. Feb 2013 11:33

AW: Ist Dateiendung registriert? Rechteproblem.
 
Funktioniert es damit besser??

http://docwiki.embarcadero.com/Libra...penKeyReadOnly

Neutral General 28. Feb 2013 11:33

AW: Ist Dateiendung registriert? Rechteproblem.
 
Danke! :-)
Das mit Reg.Access hat funktioniert!
OpenKeyReadOnly werde ich auch gleich mal ausprobieren!

DeddyH 28. Feb 2013 11:58

AW: Ist Dateiendung registriert? Rechteproblem.
 
Delphi-Quellcode:
reg := TRegistry.Create(KEY_READ);
sollte schon genügen.


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