#.net #uac #manifest #rights
#.net #uac #манифест #права
Вопрос:
У меня есть одно .net-приложение, которое будет установлено в разделе «program files», работающее в 2 разных режимах:
- «ADVANCED_MODE» со всеми включенными плагинами, которые должны открыть UAC для запуска от имени администратора
- «BASIC_MODE» с загруженным всего несколькими плагинами, которые должны работать как обычный пользователь
Что сделать, чтобы решить этот случай?
Если я внедрю файл манифеста ( requireAdmin
установлен на), он не будет работать для BASIC_MODE. Если я не использую никаких манифестов, то у меня нет возможности открыть UAC в ADVANCED_MODE. Если я использую « asInvoker
» или « highestAvailable
«, я получаю странные эффекты при запуске приложения из Program Files от имени обычной учетной записи пользователя: оно закрывается сразу после запуска без сбоев.
Что бы вы сделали? Какие у меня есть варианты?
Ответ №1:
Используйте asInvoker в своем манифесте, и когда ваше приложение запускается в ADVANCED_MODE (и вы еще не являетесь администратором), запустите новый экземпляр вашего приложения с помощью ShellExecute и глагола «runas».
Эти «странные эффекты» указывают на то, что ваше приложение не может запускаться как не-администратор (без манифеста ваше приложение будет запускаться с некоторыми настройками совместимости, такими как перенаправление файлов и реестра) Вы можете использовать Microsoft Application Compatibility Toolkit, LUA Buglight и Process Monitor для поиска стандартных пользовательских ошибок…
Комментарии:
1. Спасибо за ваш ответ. Итак, по крайней мере, есть объяснение этим «странным эффектам». Хотя я не могу сделать то, что вы предложили, поскольку мое приложение принимает только один экземпляр, запущенный в системе.
2. @Cristi: Вы можете выполнить изменение прав доступа перед проверкой мьютекса или чего-либо еще, что делает ваша проверка экземпляра…