Zitat von
MCXSC:
Zitat von
jaenicke:
Einen laufenden Prozess kann man aus Sicherheitsgründen nicht nachträglich mit Adminrechten ausstatten. Die bekommt man beim Start oder nicht.
Doch, genau das ist (zumindest mit Vista und W7) möglich. Siehe Screenshot. Das Programm (KeePass btw) wird ganz normal (also ohne
UAC oder Adminrechte) gestartet. Für jene Verknüpfung braucht man (da Registryeintrag) eben Adminrechte; nach dem Drücken des Buttons fragt
UAC eben nach ob das erlaubt werden soll (und es ist und bleibt die KeePass.exe - also wird keine zweite EXE aufgerufen).
Dann wird eben KeePass.exe ein zweites mal gestartet. Windows hat leider keine Funktionalität um Threads oder bestimmte APIs getrennt zu priviligieren. Es gibt in Windows also nur die große Keule: Admin ja oder nein.
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.