Schon vor einiger Zeit wurde ich damit mal konfrontiert und hatte keine so richtig saubere Lösung parat. Geschweige denn eine genaue Ahnung von der Reihenfolge und über welche Settings-Dateien die zahlreichen Einstellungen des Firefox beim Start importiert und gelesen werden. Geschweige denn wie Einstellungen so mitgegeben werden können, dass sie für den Benutzer unveränderbar sind.

Zuletzt war ich auf der Suche nach der elegantesten Möglichkeit, das Stammzertifikat einer internen Zertifizierungsstelle auf die Firefox-Installationen im Unternehmen zu verteilen. Bei meinen Recherchen wurde ich hier auf ein recht neues Feature aufmerksam (ab FF 49), das – einmal aktiviert – den Windows-Zertifikatsspeicher fragt, wenn eine SSL-verschlüsselte Seite besucht wird und falls das Root-Zertifikat nicht im Firefox-Speicher gefunden werden kann.
Auf dieser sehr netten KB-Seite der Mozzilarianer sind die einzelnen Settings-Files aufgeführt, wo sie zu finden sind und welche wann geladen werden. Wenn man nicht ganz bis ans Ende durchliest, endet man an der Stelle, dass eine user.js im Firefox-Profilverzeichnis des jeweiligen Users ein guter Ort wäre für diesen Parameter:

user_pref("security.enterprise_roots.enabled", true);

Über ein vor längerem gebautes VB-Script, das mir nun als Vorlage diente, hatte ich dann via Anmeldescript einer GPO flugs das besagte user.js auf alle Rechner  verteilt – funktionierte und alles war gut.

Allerdings sollte man (wie oben schon angedeutet) den Artikel ganz durchlesen und dann kommt man zur Stelle

Note: because of abuse of user.js preferences, support for user.js may be removed in a future version of Firefox.

Also keine wirklich gute, weil nicht unbedingt dauerhafte Idee.
Besser wäre eine Settings-Datei, die in

install_directory/browser/defaults/preferences/all-companyname.js

des Programmverzeichnisses gespeichert ist und beim Programmstart für alle User mitgelesen wird.
Das hat auch den Vorteil, dass das Firefox-Profilverzeichnis unterhalb des Windows-Benutzerprofils nicht erst umständlich aus der profiles.ini herausgeparst werden muss, damit die user.js dort hineingespeichert werden kann. Hier reicht dann sogar eine GPP (Group Policy Preference) auf Computerebene aus, um die Datei in die Programmverzeichnisse des Firefox zu verteilen.

Kleiner Fallstrick: Beim Systemstart gibt es noch keine Variable %LOGONSERVER%, daher wäre als Quellpfad \\domain.tld\netlogon\all-company.js sinnvoll. Als Zielpfad dann %ProgramFiles(x86)%\Mozilla Firefox\browser\defaults\preferences\.
Optimalerweise verteilt man das File nur auf Rechner, die auch einen Firefox installiert haben und fügt noch eine Zielgruppenadressierung auf dem Register „Gemeinsame Optionen“ der GPP hinzu:

„Wenn Datei existiert:
%ProgramFiles(x86)%\Mozilla Firefox\firefox.exe“

Interessant sind neben änderbaren Firefox-Preferences auch die, die man fest vorgeben möchte: lockPref() anstatt user_pref() oder pref().

So long.

Update: Seit einigen Monaten wird der Firefox auf x64-Windowsen in x64-Variante installiert. Der Installationsort bleibt – sofern der Firefox ursprünglich als x86-Variante installiert wurde – unter %ProgramFiles(x86)% bestehen. Nur, wenn man Firefox neu installiert, wird das %ProgramFiles%-Verzeichnis verwendet.