Hello,

the manifest in an executable determines the execution level. So Windows does not allow to change the execution level "dynamically".

What you have to do in this case is to use an "asInvoker" wrapper. This runs by default "per-user". Ask the "per-user" / "per-machine" question and if it is a per-machine install, start the main installation elevated from this wrapper.

BTW, never use "highestAvailable". Use asInvoker or requireAdministrator.

Windows does not allow to write to protected resources (e.g. Program Files, Windows, HKEY_LOCAL_MACHINE) from a non-elevated running application.

Friedrich