В апреле 2019 года Microsoft без фанфар реализовала (поначалу в превью) возможность установки OneDrive в папку Program Files (x86)\Microsoft OneDrive. Сегодня я расскажу, почему это важно и как перейти на новую модель установки.
[+] Сегодня в программе
Терминология
Прежде чем перейти к делу, я бы хотел определиться с терминологией установки приложений. Есть два варианта:
- Per machine. Установщик запускается с правами администратора и помещает файлы программы системную папку (Program Files), а пользовательские данные и настройки находятся в профиле. Я буду называть это системной установкой.
- Per user. Установщик запускается без прав администратора и помещает файлы программы в профиль пользователя. Там же находятся его данные и настройки. Я буду называть это пользовательской установкой.
Почему плохо устанавливать программы в профиль
С точки зрения безопасности, приложения должны устанавливаться в Program Files или Program Files (x86), куда доступ на запись есть только у администратора. Вне этих папок исполняемых файлов быть не должно, потому что в таком случае их можно подменить с ограниченными правами и нанести ущерб.
В жестко контролируемой среде такой подход упрощает применение политик, ограничивающих запуск исполняемого кода.
Например, в AppLocker разрешается запуск только из Program Files. Конечно, только этим правилом не обойтись, но сегодня речь о другом.
В последние годы практика установки программ в профиль набрала огромные обороты. Нередко это является стандартным поведением установщиков.
Даже если возможность системной установки сохраняется, не всегда очевидно, как ее выполнить. Иногда установщик принимает параметр командной строки, иногда достаточно запустить его от имени администратора (привет, Telegram). Также распространен вариант с отдельным установщиком — например Chrome MSI и VS Code ниже.
К сожалению, Microsoft в случае с OneDrive и Windows 10 подхватила тренд установки в профиль и не предлагала альтернативы почти четыре года.
Случай не единичный. Например, VS Code тоже ставится в профиль, а для установки в Program Files к загрузке предлагается отдельная версия (sic!). Но он хотя бы не входит в состав Windows.
Трудно сказать, что является официальной рекомендацией Microsoft. Так, для MSI рекомендуется именно пользовательская установка. Однако вернемся к OneDrive.
Как происходит установка OneDrive
Установщик входит в дистрибутив: C:\Windows\System32\OneDriveSetup.exe. В профиле аккаунта Default запуск установщика прописан в реестре – параметр OneDriveSetup в разделе
\Software\Microsoft\Windows\CurrentVersion\Run
Соответственно, при первом входе в каждую новую учетную запись для нее выполняется установка клиента, при этом исполняемый файл помещается в профиль пользователя %localappdata%\Microsoft\OneDrive.
Как предотвратить установку OneDrive
Этот вопрос не раз всплывал в форуме и чате. Из описания процесса установки вытекают превентивные способы:
- Внесение изменений в профиль Default во время установки ОС с помощью файла ответов.
- Модификация WIM-образа до начала установки. Нужно подключить WIM, загрузить в regedit куст
ntuser.dat
из профиля Default и удалить параметр запуска установщика ↑ Затем выгрузить куст реестра и отключить WIM с сохранением изменений. Я обойдусь без команд, поскольку недавно показывал автоматизацию аналогичного процесса.
Альтернатива – зачистка от OneDrive системы и первого профиля уже после его создания. Скрипт есть в официальном документе по оптимизации систем для VDI.
Как установить OneDrive в Program Files
Начиная с версии клиента 19.043.0304.0006 появился ключ /allusers. Для установки нужны права администратора, однако они не требуются впоследствии для обновления клиента.
- Скачайте последнюю версию клиента
- В командной строке перейдите в папку с установщиком и выполните
OneDriveSetup /allusers
При этом модель установки автоматически конвертируется из пользовательской в системную. Другими словами, все существующие и новые учетные записи переходят на новую модель с клиентом в системной папке.
Обратный переход в пользовательскую модель установки возможен только путем удаления клиента и его повторной установкой без ключа /allusers.
Любопытно, что в документации компания обещает активнее рекомендовать своим клиентам вариант системной установки. Непонятно, что конкретно мешает внедрить ее в новые версии ОС.
Дискуссия и опрос
У меня все приложения установлены в папки, запись в которые возможна только с полными правами. Конечно, у меня есть папка Portable Soft, но и она в Program Files.
А как у вас дела обстоят — много программ храните в профиле или на другом разделе? Почему? Напишите в комментариях!
Не считая OneDrive, сколько у вас приложений установлено вне Program Files?
- 1-3 (31%, голосов: 80)
- 4-10 (21%, голосов: 55)
- Ни одного (19%, голосов: 49)
- Тысячи их! (18%, голосов: 46)
- 11-20 (12%, голосов: 32)
Проголосовало: 262 [архив опросов]
DZITs
Я джва года ждал этот функционал!
Отличная статья, спасибо.
К сожалению, у нас отсутствует SCCM, но вот интересно, если добавить команду установки OneDrive в Program Files при развёртывании образа через MDT, она потребует что-то указать, или установится автоматически в пассивном режиме? И где бы поискать ключи запуска из командной строки для установщика?
Vadim Sterkin
Если команда выполняется от имени администратора, вмешательство пользователя не требуется. Виден только прогресс несколько секунд (картинка в статье).
Ключи можно поискать в Гугле или прямо в доках мсфт по запросу
OneDriveSetup command line options
. Сходу вижу/silent
и/update
.Yves Genie
В опрос стоит добавить пункт про портативные приложения, это реально тысячи. И я хотел бы получить ответ, можно ли хромбраузеры устанавливать в программ файлс.
Vadim Sterkin
Портативные приложения можно хранить и в Program Files, см. в конце статьи. А так, последний пункт опроса для вас.
Погуглите
Chrome MSI
. Я потом добавлю в статью, спасибо за напоминание. Прочие — возможно, запускать установщик от имени администратора. Надо гуглить конкретную реализацию. Расскажите, что нашли для своих браузеров.Андрей Ковальский
Обычный Google Chrome ставится в Program files, если запустить установщик под администратором. MSI нужен только для распространения в корпоративной среде, чтобы управлять установкой и обновлением при помощи политик
Yves Genie
Меня интересует конкретно хром идж. Пока ничего дельного не нашел, кроме как установить его по умолчанию при установке из онлайн инсталлера на 7ке и 8ке. Оказывается, это тот еще прикол.
https://techdows.com/2012/05/set-chrome-canary-as-default-browser-in-windows.html
Каких-то других требований к нему, кроме как установка в правильное место пока не предъявляю.
И да, выбрал последний пункт. Хотя мои портативки лежат конечно же не там. Наверное, это неправильно.
Vadim Sterkin
Хром идж? Это бета нового Edge? Для нее сделают, конечно. Это предварительный продукт.
Lecron
На другом диске программ очень много. Больше сотни. Папка синхронизируется на внешний диск. Почему? Удобно. Быстро получаю свою среду (многие лежат там еще со времен WinXP). Не только при переустановке на своей машине, но и по приезде к родственникам или в деревню. Просто скопировать на диск Д. А при отъезде, удалил и оставил ПК без следов вмешательства, что им очень нравится)). Также, не на системном диске хранятся профили некоторых программ, прокидываемые в users симлинками.
Стоит Firewall c проактивной защитой, уведомляющей о попытке запуска измененного файла. Пока таких попыток не было.
Damear Dadabayev
статья кажется неполной без инструкций о том, как посчитать, сколько прог установлено в профиль.
Damear Dadabayev
впрочем, уже разобрался, ровно три их: WhatsApp, Viber и OneDrive. последнего сейчас перекину.
Vadim Sterkin
Грубо — зайдите в %localappdata% и введите в поиск
*.exe -(*setup) -(*installer)
.Herz Mein
OFFTOP: Зачем закрыли тему про терминал? Ничего же там не рассказали толком, а там все настраивается.
Vadim Sterkin
Сейчас обсуждения автоматически закрываются через 9 дней. Я описал ключевые моменты, а расписывать каждый параметр я не планировал.
Для оффтопа есть почта, твиттер и телеграм. Туда же можете доставить свое годное руководство по настройке терминала — я с удовольствием дополню статью.
Даниил Грудинин
Если я правильно понимаю вопрос в опросе (хотя я конечно могу ошибаться), то у большого количества известных мне пользователей такие приложения как игры установлены не в Program Files по причине того что диск или в раздел «под систему» обычно не превышает 120-250Гб. В связи с чем возникает вопрос (извините если глупый), а нельзя ли на папку (условно, для установки игр — не могу придумать другого примера «тяжёлого» приложения), находящуюся на другом диске установить разрешения как на program files для повышения безопасности? Или кроме прав на паку ещё и политики какие-то придётся менять? Или это не поможет?
Vadim Sterkin
Можно с icacls. Тут пример назначения прав «как на профиль» , надо вместо %userprofile% вписать Program Files https://www.outsidethebox.ms/17670/#_Toc424055553
Lecron
Тот случай, когда PowerShell рулит однозначно.
Get-Acl -Path "C:\Program Files" | Set-Acl -Path 'D:\Program'
Копирует права вместе с «владельцем», в отличии от icalcs save/restore.
Vadim Sterkin
А бэкап где? И не забывайте тег code…
А так, зачёт!
Lecron
Бэкап прошит в ACL раздела)))