Некоторые производители ПО до сих пор не соблюдают элементарных правил разработки программ для современных многопользовательских вычислительных сред и создают программы, не позволяющие их использовать без дополнительных костылей в условиях централизованной инфраструктуры с требуемым уровнем безопасности и ограниченными правами пользователей.
Столкнувшись на практике с обслуживанием систем видеонаблюдения я отказывался понимать, что ПО для просмотра видеокамер выпущено совсем недавно (производителя умолчу). Программа, к моему удивлению, требовала для своей работы административных прав, причем анализ того, что именно она делает с компьютером, не выявил необходимости в этом. Да, программа хранит настройки в директории установки в Program Files и ограниченная учётная запись не имеет доступ к ним на запись, но попытка обойти это ограничение установкой программы в другую папку, успехом не увенчалась. Одним из решений которое я в итоге использовал, было подписание исполняемого файла своей цифровой подписью и редактирование манифеста с заменой level=»requireAdministrator» на level=»asInvoker», но ввиду отсутствия цифровых подписей в широком обиходе в этой статье я расскажу о другом варианте решения:
Из нескольких способов запуска программ с правами администратора под пользовательскими учётными записями я остановился на утилите RunAsRob, она устанавливает в систему свою службу и позволяет создавать повышающие в правах ярлыки на любые программы. Установку самой утилиты, как вы понимаете, нужно выполнять с правами администратора, а теперь обо всём по порядку.
Runasrob распространяется в zip-архиве, в котором находятся две папки x86 и x64. Выбрав требуемую разрядность и запустив RunAsAdmin.exe вы увидите следующее окно:
Нажимите Install RunasRob. Это выполнит установку службы, а её исполняемый файл скопируется в папку Program Files\RunasRob. Далее я рекомендую закрыть установщик, положить его в директорию установки и запустить уже оттуда. В рассматриваемом примере мы не будем ставить софт для видеонаблюдения, а сделаем всё задуманное с отличной утилитой AntiSMS, которая так же требует прав администратора, но необходимость этого вопросов не вызывает.
Добавляем программу в список, ставим галку на Logon as administrator и жмем на Create shortcut. Это создаст в папке с RunasRob ярлык на запуск. В его свойствах вы можете поменять иконку и, если требуется, комментарий.
После этого перенесите ярлык в доступное ограниченному пользователю место, например на общий рабочий стол и перелогиньтесь в пользовательскую учётку. Первый запуск ярлыка из под ограниченной учётной записи потребует ввести пароль от неё (не административный, а именно пользовательский пароль) и не забудьте поставить галку на Store credentials.
На этом настройка закончена, а созданный ярлык позволит запустить программу с правами администратора под ограниченной учётной записью. В данном решении есть небольшой недостаток — мигание консольного окна при запуске, но я обычно в этот момент медленно моргаю и не замечаю этого)).