Идеология
Думаю не я один задавался вопросом: «Каким образом управлять Mozilla Firefox с помощью групповых политик?»
Потратив не один час на поиски более-менее вразумительного ответа, нашел только способы, которые создают групповую политику, основанную на редактировании реестра. На оффициальном сайте имеется аддон для Mozilla, но он опять же для правки реестра.
Проблема в том, что Firefox последних версий не хранит своих параметров в реестре. На момент написания статьи использовалась версия Firefox 26.0.
Все свои данные Firefox хранит в %APPDATA% пользователя Windows.
Таким образом все описанные способы по редактированию реестра, сводятся к нулю.
Конечно, можно написать элементарный батничек, который бы нам по расписанию, или при logon'е пользователя копировал нужные файлы в нужное место.
Тут еще одна загвоздка. Если посмотреть на путь до профиля Mozilla Firefox, то он имеет вид: %APPDATA%MozillaFirefoxProfiless08qd9to.default
У вас он такой?
Да, последний каталог имеет рандомный вид.
Проблематика
Для решения этой проблемы есть несколько способов:
- Поместить в шаблон профиля пользователя Default заготовку профиля Firefox.
- Сделать у всех пользователей последний каталог профиля Firefix одинаковым.
- Создать внешний обработчик, который бы вычислял имеющийся профиль Firefox.
Правка шаблона пользователя Default принесет свои плоды только при заведении новых пользователей. Да и делать это нужно на каждом компьютере. Как быть если пользователей много и они уже пользуются Firefox? Это опять нужно подходить к каждому компьютеру и вносить какие-то изменения. Поэтому я более склоняюсь к варианту с обработчиком.
Реализация
С помощью чего писать обработчик, дело лично каждого. Имея какой-никакой опыт в программировании на Delphi, на нем и буду его строить.
Задача: подготовить файлы конфигурации, определить путь до профиля Mozilla Firefox и положить туда эти самые файлы.
Подготовить файлы конфигурации несложно, для этого достаточно настроить Mozilla Firefox под нужные нам параметры под любой учетной записью на любом компьютере. После этого нужно взять необходимые нам файлы и поместить на общий ресурс.
В общем случае, нас интересуют файлы: prefs.js — общие настройки Mozilla Firefox, а также mimeTypes.rdf — настройки связи приложений с типами, открываемыми в Mozilla Firefox.
Теперь идем к обработчику.
Первым делом необходимо определить правильный путь до профиля Mozilla Firefox. В каталоге %APPDATA%MozillaFirefox имеется файл profiles.ini в котором и описан каталог с рандомным именем.
Затем копируем подготовленные файлы параметров в профиль Mozilla Firefox.
Прописывать в исполняемом файле нужные для копирования файлы — не есть хорошо. Лучше создать файл конфигурации, в который будем писать имена файлов для копирования. Осталось добавить проверку доступа файлов и каталогов, а также вставить точки логирования работы.
В результате получилась удобная в использовании программа, которую поместим в исполняемые скрипты при logon'е пользователя.
Архив с исходником и скомпилированным файлом, лежит на файлообменник.рф.
Файл конфигурации имеет вид:
=============================
[LOG]
logdir=\XXX.XXX.XXX.XXXfolder
logname=UpdateFirefox.log
[FILES]
file1=prefs.js
file2=mimeTypes.rdf
============================
logdir — сетевая папка в которую будет записываться лог работы программы. Если не указано, то в качестве назначения будет использоваться диск C:. Не забудьте проверить доступность сетевого каталога, в том числе и на уровне потоков NTFS.
logname — имя лог-файла. Если не указано, будет использовано UpdateFirefox.log
fileX — можно указывать любое количество файлов для копирования. Одно замечание: порядок нумерации не нарушать и не использовать пустые значения.
Выявленные проблемы
Начиная с Windows Vista, введено средство контроля учетных записей пользователей (UAC). При попытке использовать консольное приложение, UAC блокировал исполнение приложения до ввода пароля Администратора. Я не смог найти где можно добавить это приложение к доверенным, а подписывать его не имеет смысла, поэтому пошел более простым путем и оформил его как VCL-приложение. После этого все вопросы с UAC были сняты.
Автор: Lizard17