![]() |
Registrieren (Verknüpfen) von Dateierweiterungen unter Vista
Hallo,
Was ist denn unter Vista der beste (und für den Benutzer) einfachste Weg Dateierweiterungen mit meine Programm zu verknüpfen. Ich nutze folgenden CODE: Code:
Code:
WriteError:= False;
Reg:= TRegistry.Create; Reg.RootKey:= HKEY_CLASSES_ROOT; Reg.OpenKey('.obj', True); try Reg.WriteString('', 'OBJ.Renderfile'); except WriteError:= True; end; Reg.CloseKey; if not WriteError then begin Reg.OpenKey('OBJ.Renderfile', True); try Reg.WriteString('', 'Renderfile'); except // end; Reg.OpenKey('shell', True); Reg.OpenKey('open', True); Reg.OpenKey('command', True); try Reg.WriteString('', '"' + 'C:\Pfad\myprog.exe'+ '"' + ' "%1"'); except // end; Reg.CloseKey; Reg.CloseKey; Reg.CloseKey; Reg.CloseKey; end; Unter XP war das ok (man brauchte aber trotzdem Admin Rechte). Aber unter Vista ist das ja ein Problem mit UAC und den Adminrechten. Ich starte mein Programm (Siehe manifest) as Invoker - so wird es ja für Vista empfohlen, wenn man nicht Adminrechte braucht. <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker"/> </requestedPrivileges> </security> Funktionen, die Adminrechte benötigen sollte man in andere Programme legen habe ich gehört. So funktioniert es auch, aber für Benutzer wäre es schön, wenn alles aus dem Hauptprogramm raus ginge. Niemand ruft mein Programm zum setzen der Dateiverknüpfungen auf. Ein Unterprogramm mit Adminrechten aus meine Programm zu starten ist wohl laut Vita Gidelines auch nicht möglich, wenn mein Programm as Invoker läuft. Wie kann ich nun dennoch aus meinem Programm Dateierweiterungen unter Vista setzen, ohne dass immer beim Programmstart meines Programms Adminrechte nötig sind. Nachfragen nach Adminrechten beim Verknüpfungen setzen wäre ok. Grüße User69 |
Re: Registrieren (Verknüpfen) von Dateierweiterungen unter V
Zitat:
Um den UAC-Dialog kommst du keinesfalls rum. |
Re: Registrieren (Verknüpfen) von Dateierweiterungen unter V
Kann man das registrieren denn auch aus dem Programm selbst unter Vista machen?
Also ohne Adminrechten starten und dann nur für diese Aktion die Nachfrage der UAC bekommen. Davor sollte ich herausbekommen, ob Adminrechte für denn User vorliegen (was bei mir auch nicht funktioniert, wenn ich as ivoker starte). Gibts dazu auch Ideen? User69 |
Re: Registrieren (Verknüpfen) von Dateierweiterungen unter V
Du brauchst um Administratorrechte anzufordern einen separaten Prozess, das kann auch ein COM Objekt sein. So funktioniert das auch ohne zusätzliche Exe. Es gibt soweit ich weiß nur diese beiden Wege.
// EDIT: Um das nochmal klar zu sagen: Ein Prozess selbst kann niemals höhere Rechte bekommen während er läuft. // EDIT2: Wie das mit COM geht: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 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-2025 by Thomas Breitkreuz