![]() |
Vista und die Dateierweiterung (UAC "On-Demand")
Hallo,
mit Hilfe ![]() Problem: Ist unter Vista UAC aktiviert, und das Programm nicht als Administrator gestartet, so funktioniert es natürlich nicht. Bei manch anderen Programmen taucht dann - quasi "On-Demand" - das UAC-Popup auf, erlaubt den Zugriff und es klappt. Allerdings habe ich nirgendswo gefunden, wie ich dieses "On-Demand" lösen kann... Jemand eine Idee? :( Danke, MCXSC |
Re: Vista und die Dateierweiterung (UAC "On-Demand"
Halbwissen: Für den aktuellen User hat dein Programm ja Zugriff. Also könntest du in den HKEY_CURRENT_USER schreiben
|
Re: Vista und die Dateierweiterung (UAC "On-Demand"
HKEY_CURRENT_USER ist nur für die Verknüpfung der Erweiterung nicht funktionell...
|
Re: Vista und die Dateierweiterung (UAC "On-Demand"
Zitat:
![]() |
Re: Vista und die Dateierweiterung (UAC "On-Demand"
Zitat:
Aber dort gibt es natürlich die selben Zugriffsbeschränkungen wie auf HKEY_CLASSES_ROOT. Das entsprechende XP-Manifest würde immer die Adminrechte anfordern (kurz vor/wärend dem Programmstart) |
Re: Vista und die Dateierweiterung (UAC "On-Demand"
Vielleicht hilft Dir ja dieser Artikel darüber:
![]() Viele Grüße |
Re: Vista und die Dateierweiterung (UAC "On-Demand"
Zitat:
Nur gibt es manche "One-EXE-Programme", die anfangs keine Abfrage haben (und dementsprechend auch keine COM-Datei registrieren) und trotzdem nur für bestimmte Funktionen explizit Adminrechte anfordern. Bringt Vista da wirklich keine eigene Abfrage mit? :gruebel: |
Re: Vista und die Dateierweiterung (UAC "On-Demand"
Das ist eigentlich relativ einfach. Benutze ShellExecuteEx mit runas und starte deine eigene Exe mit einem entsprechenden Parameter nochmal. Diese zweite Instanz schaut nach dem Parameter und wenn der gesetzt ist, setzt sie nur die Registryeinstellungen und beendet sich wieder. ;-)
Einen laufenden Prozess kann man aus Sicherheitsgründen nicht nachträglich mit Adminrechten ausstatten. Die bekommt man beim Start oder nicht. |
Re: Vista und die Dateierweiterung (UAC "On-Demand"
|
Re: Vista und die Dateierweiterung (UAC "On-Demand"
Bei den Funktionen habe ich so direkt nicht gesehen wie ich damit die UAC bzw. den Windows-Benutzerdialog aufpoppen lasse. Sonst hätte ich für meine Updater Utils wohl eher sowas benutzt. :stupid:
|
Re: Vista und die Dateierweiterung (UAC "On-Demand"
ich hatte mal vor Langem was mit CreateProcessAsUser gemacht und da vorher eine Userliste ausgelesen, diese in einem ialog angezeigt und dann selber gefragt ... k.A. ob/wie das anders geht, aber zumindestens passte es so in den Style des Programmes rein :lol:
[add] Es könnte sein, daß ein Dialog aufpoppt, wenn man kein Passowrt bzw. Benutzernamen angibt? :gruebel: |
Re: Vista und die Dateierweiterung (UAC "On-Demand"
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
Re: Vista und die Dateierweiterung (UAC "On-Demand"
Zitat:
Oh und btw, der User-level Knoten, der HK_CR abbildet ist HK_CU/Software/CLasses. Damit kannst du sowohl COM-Registraturen erledigen, also auch File-extensions verknüpfen.[1] Wobei man mit Fileextensions eigentlich nur sagen sollte: "Jupp, mein Tool kann .xyz öffnen", aber nicht als Default einzutragen. Einfach so umbiegen hat so einen penetranten Beigeschmack, IMO. [1] Wenn es en .Net COM Server ist, kann regasm das schon von sich aus. Für native COM Server musst du regcap.exe aus dem WindowsSDK nehmen. Das gibt dir eine .reg Datei anstelle einer Registrierung, und die kannst du einfach von HK_CR auf HK_CU/Software/Classes ändern. Für UAC brauchst du einen Out-Of-Process COM Server. |
Re: Vista und die Dateierweiterung (UAC "On-Demand"
Zitat:
Oder es hat sich eben wie gesagt selbst neu gestartet. So mache ich es ggf. auch, damit ich auf dem Rechner nix vorher installieren muss. |
Re: Vista und die Dateierweiterung (UAC "On-Demand"
Zitat:
Der erste Ansatz hat den Vorteil, dass es Addhoc geht, also keine Installation notwendig ist. Der Nachteil besteht jedoch darin, dass die Kommunikation auwändig ist. Wurde alle richtig ausgeführt? Was ist mit den Resultaten? Da wirst du nicht um eine Interprozesskommunikation herumkommen, wenn du dich nicht auf den Prozessrückgabewert beschränken willst. Der zweite Ansatz, wie du schon weißt, hat den Nachteil, dass man ein COM-Objekt bei Windows registrieren muss. Die Windowsinstaller (MSI) besitzen jedoch schon einen Dienst, der es ermöglicht, dass erst bei einer Notwendigkeit, die UAC aufpoppt (z.b. vor dem Dateikopieren). Der Vorteil im zweiten Ansatz besteht darin, dass man eine ganz normale Methode aufruft und alle Daten, die als Parameter übergeben oder von der Methode zurückgeliefert werden, von COM (mit Einschränkungen) verwaltet werden. |
Re: Vista und die Dateierweiterung (UAC "On-Demand"
Zitat:
Die Vorgehensweise mit COM finde ich da eher schwieriger zu implementieren, auch wenn die Verwendung danach einfacher ist. |
Re: Vista und die Dateierweiterung (UAC "On-Demand"
Nicht ganz so einfach, wie man denkt. Da WindowsNachrichten nicht so einfach funktionieren, wenn man mit Adminprozessen reden will. Und den Rest, naja, da kommen immernoch die Rechtegeschichten zum tragen, d.h. DACL.
|
Re: Vista und die Dateierweiterung (UAC "On-Demand"
Ich muss zugeben, dass ich mich da nicht so viel mit beschäftigt habe, aber bisher klappt das wie es soll mit der Kommunikation in beide Richtungen. *klopft auf Holz*
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 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