Справочная информация: Я ни в коем случае не эксперт по безопасности Windows / правам пользователя. У меня есть приложение (написанное на C #), которое должно иметь возможность записывать / удалять файлы и папки в своем корневом каталоге, записывать / удалять файлы в другом месте на диске, записывать / изменять значения в системном реестре (локальный компьютер) и запускать & остановите другие приложения и службы. Я полагаю, что мне нужны права администратора по крайней мере для некоторых из этих действий.
Я попытался запустить это, и на компьютерах с выключенным UAC он прекрасно работает без каких-либо дополнительных настроек. Однако на компьютерах с включенным UAC (любой уровень выше «никогда не уведомлять» в Windows 7) произойдет сбой. Мне нужно, чтобы он работал на всех компьютерах.
До сих пор я бы просто вручную устанавливал флажок "запускать эту программу от имени администратора", и все было бы в порядке. Однако теперь мы решили, что мы позволим клиентам устанавливать это программное обеспечение самостоятельно, и оно должно запускаться «из коробки».
У меня есть проект развертывания в Visual Studio 2008, который устанавливает все и записывает необходимые данные запуска в реестр. Теперь мне нужно установить флаг «Запустить эту программу от имени администратора». Полагаю, это не так просто, как хотелось бы.
Так каков правильный способ сделать это? Эта программа запускается при запуске, и нашим клиентам будет неприятно, если UAC будет появляться (и, возможно, затемнять экран) каждый раз, когда они перезагружают свой компьютер.
Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ: Спасибо за ваши ответы. Я понимаю, что работа с UAC будет осуждена, и я вижу, что Microsoft не поддерживает «белые списки», поэтому она будет запрашивать разрешение только один раз. Это нормально, я могу это уважать, однако у меня есть несколько дополнительных вопросов:
Можете ли вы предоставить мне ссылку, которая покажет мне, как правильно поднять программу до исправления повышенного состояния? Есть ли какая-нибудь литература о том, какие варианты и т. Д ... В основном я хотел бы руководство UAC 101.
Есть ли способ повысить статус безопасности, когда мне нужны дополнительные привилегии (и только после этого запрашивать UAC). В основном это приложение работает в фоновом режиме, в большинстве случаев ничего не делая. Время от времени он будет проверять некоторые файлы (в этот момент мне потребуется возможность записи на диск и чтения реестра (в данный момент только чтение - это нормально), однако, поскольку это временная папка, не имеет значения, где я Я бы поставил его. Если есть место, куда приложение может писать без каких-либо привилегий, это было бы идеально.)
Однако в какой-то момент мне нужно будет выполнить все остальные задачи (пользователь должен подтвердить это действие в любом случае), поэтому, если UAC выдаст запрос на этом этапе, это не будет проблемой. Есть ли способ повысить его как раз в этот момент, а затем вернуть его к разрешениям по умолчанию?
Будет ли такое решение работать с более старыми версиями Windows, включая Vista и Xp (и, возможно, с более старыми версиями?), Что потребуется для его работы?