[Из песочницы] Обновляем Skype 8 без участия администратора
Со времен выхода ПО Skype восьмой версии многие столкнулись с проблемой обновления в случае если конечный пользователь не имеет прав на установку приложений в системе. Обновляется он достаточно часто и естественно требует от рядовых пользователей ввод данных Администратора через UAC.
Поиск в интернете приводит ко не совсем удобным для админа способам:
- Повышение прав пользователя до Администратора? Не вариант, это в большинстве случаев приводит к тому, что из решения одной проблемы со Скайп Вы можете нажить себе множество других проблем из-за неграмотности рядового пользователя (а их неграмотных большинство, это статистика)!
- Использование встроенной в Windows команды 'runas' не совсем подходит. При ее использовании все равно необходим пароль, а при использовании ключа /savecred Вы делаете огромную дыру в безопасности своей системы!
- Можно использовать сторонний софт, что то вроде AdmiLink Алексея Курякина, или ExecAs. Как вариант, но не совсем удобно распространять дополнительное ПО если у Вас большое количество рабочих станций в сети!
- Отключить обновление Скайп. Компания Microsoft известа и тем, что добровольно принудительно заставляет пользоваться свежими версиями ПО и здесь встает вопрос времени, сколько проработает программа неактуальной версии!
- Компания Microsoft не рекомендует использовать домашнюю версию Скайп в корпоративной среде и мило предлагает перейти на платную версию Скайп для Бизнеса!
Поехали…
Имеем установленный Скайп 8 версии, при очередной попытке запуска cтановится понятно, что Скайп закачивает exe-инсталятор в папку, где размещаются данные приложений того пользователя от которого выполнен запуск Скайп:
Создаем bat-файл:
echo off
set SKYPE=
:: Поиск 'exe' файла
for /f "tokens=*" %%i in ('where /R %HOMEDRIVE%\Users Skype-Setup.exe') do (set SKYPE=%%i)
:: Проверка переменной на "пустоту" (если файл не найден)
if "%SKYPE%"=="" goto quit
:: Запуск инсталятора с ключом /silent
"%SKYPE%" /silent
:: Удаляем 'exe' файл чтобы избежать циклическую установку одной и той же версии при запуске сценария (сам Скайп его не удаляет после обновления)
del "%SKYPE%" /F /Q
:: Завершаем процесс skype.exe от админа, автоматом запускаемый после обновления
taskkill /F /IM skype.exe
:quit
exit
Суть проста — сценарий ищет файл Skype-Setup.exe. В случае работы нескольких пользователей в одной системе, мы не знаем в каком профиле лежит инсталятор, поэтому ищем его в папке где хранятся все профили пользователей (справедливо для Windows Vista и выше, для Windows XP путь размещения данных приложений другой). Если Вы знаете конкретного пользователя замените значение переменной SKYPE на »%HOMEDRIVE%\Users\\Appdata\Roaming\Microsoft\Skype for Desktop\Skype-Setup.exe», я лишь привел обобщенный пример. Записываем результат команды 'where' (путь включая имя файла) в переменную SKYPE, запускаем его добавляя ключ /silent для режима «тихой» установки.
Запускаем встроенный планировщик заданий от админа и помещаем в расписание выполнение созданного bat-файла следующим образом:
В моем случае доменная сеть и несколько сотен рабочих станций, распространение bat и настройку задания в планировщике выполнена с помощью групповых политик в домене.
Я настроил триггер на выполнение при запуске компьютера, вполне достаточно.
Для удобства можно создать ярлык на рабочем столе пользователя для ручного запуска задания руководствуясь вот этой статьей.
Способ актуален для Windows Vista/7, в Windows 10 ПО Skype является универсальным APPX-приложением, для обновления которых прав Администратора не требуется.