Administrator-Privilegs for a Single Method
Im Currently working on an ApplicationLauncher / Autoupdater. So for installing/updating an app to "Program Files", i need to request Administrator rights.
Well, since the Updater only needs to write something if new Versions are found, i tried to only request the privilegs, if a new Version is found开发者_如何学Go.
The updater is executed everytime, before the application launches, so asking "everytime" for Adminrights is no solution...
I searched a lot, and found the following:
[PrincipalPermission(SecurityAction.Demand, Role = @"Administrators")]
private void InstallOrUpdate(AppItem appItem)
but wenn i try to this, the updater throws a SecurityException...
Request for principal permission failed.
What am i doing wrong?
Best regards, dognose
You cannot elevate permissions for the application once it's running. In order to request the Administrators role, it will need to be done at startup time of the executable.
Your best option would be to have your updater either fire a different executable to do the InstallOrUpdate
, or to re-run itself (with a different command line argument, potentially) with a request for elevated permissions at that point.
UAC elevation is per-process, i.e. the process as a whole is elevated, not per single method. The best course of action, would be to create a specific action process that requires elevated privileges, and launch that process from your updater when it actually needs to do some work. This might help.
精彩评论