Nastavení asociací typů souborů ve Windows 10
Jistě jste již zaregistrovali, že Windows 10 se (zhruba od verze 1803) urputně brání programově řízeným změnám asociací typů souborů. Jedná se o ochranu proti „unesení“ asociace typu souboru a jako každé podobné zvýšení úrovně zabezpečení lehce komplikuje pracovní den typického administrátora.
Pozn.: Dnes se nebudeme zabývat možností importu kompletního XML souboru, jak je popsáno např. na https://docs.microsoft.com/cs-cz/internet-explorer/ie11-deploy-guide/set-the-default-browser-using-group-policy. XML s definicí asociací lze použít v rámci „task sequence“ v SCCM nebo přímo importovat v rámci GPO, tato metoda bohužel ne vždy funguje ideálně, a také neumožňuje specifičtější možnosti konfigurace pro koncové uživatele.
Část první – jak to (ne)funguje
Pojďme se tedy nejdříve podívat, jak se Windows 10 chovají při změně asociace souborů uživatelem. Jako příklad si zvolíme oblíbeného kandidáta – soubor s příponou .PDF.
V okamžiku, kdy uživatel v nastavení počítače vybere preferovanou aplikaci pro konkrétní typ souboru, systém zapíše předvolbu do registru v cestě
Počítač\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts.pdf\UserChoice
Obrázek 1 - Registr po nastavení asociace typu souboru uživatelem
Pokud byste tento postup chtěli zautomatizovat a vyexportované nastavení z registru přidat pouhým importem, systém vám tuto operaci neumožní, pokud již záznam pro typ souboru existuje.
Obrázek 2 – Pokus o přímý import exportovaného .reg souboru
Zkusíme to obejít, smažeme celý klíč a znovu naimportujeme uložený .reg soubor.
Systém se opět bude bránit a hodnotu v registru přepíše vlastním nastavením. V našem případě změní asociaci .pdf souboru na prohlížeč Edge. Tato část je vám možná povědomá, na internetu lze najít celou řadu diskuzí, kde se zoufalí administrátoři snaží vypořádat se samovolným nastavováním asociací souborů pro Edge.
Obrázek 3 – Cílový stav po importu .reg souboru
Registr tedy obsahuje zcela jiné nastavení než to, které jsme očekávali.
Pokud budeme celou operaci monitorovat, rychle najdeme našeho záškodníka. Systém totiž před každou změnou asociace vygeneruje unikátní hash, který nejdříve přidá do registru. Následující změna asociace musí s tímto hashem souhlasit. Pokud hash nesouhlasí, systém resetuje asociaci podle vlastního uvážení.
Obrázek 4 – Cílový stav po importu .reg souboru
Část druhá – SetUserFTA
Když už tedy víme, že je potřeba nejdříve spočítat hash, zbývá zjistit, jak na to.
Špatná zpráva: tento proces není zdokumentován, postup výpočtu tedy nemáme k dispozici.
Dobrá zpráva: Christoph Kolbicz pomocí reverzního inženýrství přišel na to, jak celý proces funguje a dal světu k dispozici nástroj SetUserFTA
Část třetí – příprava a testování
Řekněme tedy, že naší cílem bude uživatelům, kteří již mají nainstalován Adobe Acrobat Reader, jednorázově nastavit asociaci soborů .pdf s tímto programem. Uživatel tedy předvolbu, kterou ale bude mít možnost kdykoliv změnit v nastavení Windows 10.
Na vzorovém počítači nejprve zjistíme název přidružení typu souboru, v našem případě tedy příkazem „assoc .pdf“.
Obrázek 5 – Získání názvu asociace pro .pdf
Získali jsme tedy název „AcroExch.Document.DC“, se kterým budeme dále pracovat na cílovém počítači, resp. v profilu uživatele, ve kterém je potřeba asociaci upravit.
Obrázek 6 – Původní asociace souboru (Edge)
Po stažení a rozbalení utility z http://kolbi.cz/SetUserFTA.zip pak můžeme spustit příkaz
SetUserFTA.exe .pdf AcroExch.Document.DC
Obrázek 7 – Nová asociace souboru (AR)
Při kontrole registru je nyní vše v pořádku.
Obrázek 8 – Korektní úprava asociace souboru v registru
Část čtvrtá – nasazení v GPO
Nyní už zbývá jen rozhodnout, jakým způsobem budeme doručovat nastavení koncovým uživatelům.
Nástroj je potřeba spustit v kontextu uživatele, který má nastavení obdržet.
SetUserFTA umožňuje
- Nastavit asociaci pro jediný typ souboru.
- Nastavit asociaci pro více souborů (použijeme konfigurační soubor).
- Nastavit asociaci souboru pouze pro členy bezpečnostní skupiny (jméno skupiny je použit jako parametr).
Popis možností a ukázky konfiguračních souborů naleznete na Christophově blogu.
Naším cílem je nastavit asociaci jednorázově, proto zvolíme zápis do registru v sekci „RunOnce“, pro vaše prostředí samozřejmě můžete zvolit další metody (Immediate Scheduled Task, Logon Script atd.)
Podstatné je nástroj zpřístupnit uživatelům, pozor na spouštění přímo ze sdílené síťové složky, které může vést k chybovým hláškám. Soubor totiž není digitálně podepsán a spouštění ze sítě tedy nemusí být vždy možné. V takovém případě je nejjednodušší způsob nakopírovat soubor např. pomocí GPO cílené na počítače s Windows 10.
Pokud zvolíte spouštění přímo ze síťového umístění, může konfigurace vaší politiky vypadat např. takto:
V sekci „User Configuration/Preferences/Windows Settings/Registry“ přidáme novou položku (Create):
- Hive: HKCU
- Key Path: Software\Microsoft\Windows\CurrentVersion\RunOnce
- Value name: SetUserFta
- Value type: REG_SZ
- Value data: "\
\ \SetUserFTA.exe .pdf AcroExch.Document.DC" - Zaškrtneme „Apply once and do not reapply“
Obrázek 9 – Ukázka přípravy GPO (část 1)
Obrázek 10 – Ukázka přípravy GPO (část 2)
Pro dnešek máme hotovo, nakonec to vlastně ani nebylo tak složité, co myslíte?
Sdílej v médiích