Вам необходимо решить, пишете ли вы административное приложение, которое намеренно изменяет настройки для всех пользователей (посредством записи в HKLM), или обычное приложение, которое этого не делает.Если вы действительно пишете административное приложение, поместите в него манифест с requestedExecutionLevel
из requireAdministrator
.Пользователь будет получать приглашение UAC при каждом запуске приложения, но ваши записи в HKLM будут успешными.В качестве альтернативы, измените приложение на запись в HKCU или в другое хранилище для каждого пользователя.
(Не знаете, как добавить манифест?)
Использование виртуализации - плохая идея.Это было реализовано, чтобы позволить непроявленным приложениям по крайней мере что-то вроде работы.Когда-нибудь оно уйдет и не будет таким уж большим, пока оно здесь.