Konfiguration von User FTAs in Citrix WEM mit SetUserFTA.exe

Wer im Server-Based Computing Umfeld tätig ist, der wird sich sicherlich schon mal mit File Type Associations (FTAs) beschäftigt haben. Bis inkl. Windows 7 / Windows Server 2008 R2 war es relativ einfach, mit GPPs oder mit WEM FTAs zu konfigurieren und auf User-Basis zuzuweisen. Leider hat Microsoft im Bereich FTA Konfiguration am Windows 8 / Windows Server 2012 solch gravierende Änderungen vorgenommen, dass es mit Bordmitteln nahezu unmöglich ist, per-Benutzer Einstellungen hierbei vorzunehmen. Zwar lassen sich nach wie vor FTAs konfigurieren, diese sind allerdings i.d.R. System-basiert, was insbesondere bei Terminal Server Umgebungen, bei denen z.B. mehrere Programme für PDF gleichzeitig installiert sind, zu einer schlechten User Experience führt. Selbst die Built-in Konfiguration von FTAs per GPP oder WEM funktioniert nicht mehr wirklich gut.

Glücklicherweise gefällt dies auch einem schlauen Entwickler nicht, sodass er ein Tool SetUserFTA.exe entwickelt hat, mit dem man diese Einschränkungen umgehen kann.

Was macht SetUserFTA.exe?

Schaut man sich die Registry Permissions an, so stellt man fest, dass in den Permissions unter HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\UserChoice (beispielhaft für .jpg; Pfad für andere Dateiendungen ist analog dazu!) für den Benutzer selbst ein explizites Deny zum Ändern der Werte eingetragen ist.

Explizite Deny ACL

Bekanntermaßen gewinnt ein Deny immer über ein Allow. Daher funktioniert es nicht, den benötigten Registry Wert ProgId per GPP oder per WEM anzupassen – die Änderung wird hier ja im User-Kontext ausgeführt und der User darf ja durch das Deny keine Änderung vornehmen.

SetUserFTA.exe umgeht dieses Problem, indem es die Deny Rechte auf dem betroffenen Registry Key entfernt (das darf der User ja, weil er Full Control über den Key hat und das Deny Recht explizit nur das Ändern der Registry Werte innerhalb des Keys unterbindet) und danach die korrekten Registry Einstellungen vornimmt.

Wie verwendet man SetUserFTA.exe?

SetUserFTA.exe ist grundsätzlich ein CLI Tool und bietet 2 Möglichkeiten, die FTAs zu konfigurieren.

Möglichkeit 1

SetUserFTA.exe kann mit einer Konfigurationsdatei (Text-Datei) aufgerufen werden. In der Konfigurationsdatei sind die entsprechenden Parameter für die FTAs zu konfigurieren. Der Aufruf hierfür lautet SetUserFTA.exe <Pfad-zur-Config>\FTA_Config.txt.

Der Inhalt folgt dem Schema <File-Type>, <ProgID/DLL/EXE>, <AD-Gruppe> (AD-Gruppe ist optional). Beispielhaft hier der Inhalt der Konfigurationsdatei mit unterschiedlichen FTAs je nach AD-Gruppe:

.jpg, "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll", Group_FTA_jpg_PhotoViewer
.png, "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll", Group_FTA_png_PhotoViewer
.txt, Application/notepad++.exe, Group_FTA_txt_NotepadPlusPlus
.txt, OpenOffice.Docx, Group_FTA_txt_OpenOffice
.txt, Wordpad.document.1, Group_FTA_txt_Wordpad
.pdf, AcroExch.Document.DC, Group_FTA_pdf_AcrobatReader
.pdf, PDFXEdit.PDF, Group_FTA_pdf_PDFXChange
.mp4 "%ProgramFiles%\VideoLAN\VLC\vlc.exe", Group_FTA_mp4_VlcMediaPlayer

Möglichkeit 2

Meine präferierte Option (insbesondere in Verbindung mit Tools wie WEM) ist es, jeden Dateityp mit SetUserFTA.exe eigenständig zu konfigurieren. Dies verbessert optisch die Übersichtlichkeit und hilft dabei, dass Benutzer bei der Anmeldung nur die FTAs verarbeiten müssen, die für sie auch gültig sind.

Der Aufruf hierbei lautet SetUserFTA.exe <File-Type>, <ProgID/DLL/EXE>, <AD-Gruppe> (AD-Gruppe ist wieder optional), z.B.:

SetUserFTA.exe .jpg, "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll"
SetUserFTA.exe .mp4, "%ProgramFiles%\VideoLAN\VLC\vlc.exe"
SetUserFTA.exe .txt, Application/notepad++.exe, Group_FTA_txt_NotepadPlusPlus
SetUserFTA.exe .pdf, PDFXEdit.PDF, Group_FTA_pdf_PDFXChange
Verwendung in WEM

In WEM kann SetUserFTA.exe in Kombination mit External Tasks Funktion genutzt werden.

Beispiele

WEM External Task SetUserFTA mit Config File

Display -> Name:         SetUserFTA: Based on Config File
Display -> Description:  SetUserFTA: Based on Config File
Target -> Path:          \\<Server>\<Share>\SetUserFTA.exe
Target -> Arguments:     \\<Server>\<Share>\FTA_Config.txt
Options -> Run Hidden:   TRUE

WEM External Task SetUserFTA ohne Config File

Windows Photo Viewer (.jpg)

Display -> Name:         SetUserFTA: .jpg -> Windows Photo Viewer
Display -> Description:  SetUserFTA: .jpg -> Windows Photo Viewer
Target -> Path:          \\<Server>\<Share>\SetUserFTA.exe
Target -> Arguments:     .jpg "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll"
Options -> Run Hidden:   TRUE

Andere Bilddateiformate (z.B. .bmp, .gif, .tiff, etc.) lassen sich analog dazu konfigurieren.

Notepad++ (.txt)

Display -> Name:         SetUserFTA: .txt -> Notepad++
Display -> Description:  SetUserFTA: .txt -> Notepad++
Target -> Path:          \\<Server>\<Share>\SetUserFTA.exe
Target -> Arguments:     .txt Applications\notepad++.exe
Options -> Run Hidden:   TRUE

VideoLAN Media Player (.mp4)

Display -> Name:         SetUserFTA: .mp4 -> VideoLAN Media Player
Display -> Description:  SetUserFTA: .mp4 -> VideoLAN Media Player
Target -> Path:          \\<Server>\<Share>\SetUserFTA.exe
Target -> Arguments:     .mp4, "%ProgramFiles%\VideoLAN\VLC\vlc.exe"
Options -> Run Hidden:   TRUE
Besonderheiten

Classes

Beispiele für User Classes für FTAs per WEM Registry Key

Notepad++

Display -> Name:                          User Class Notepad++ FTAs
Display -> Description:                   HKCU\Classes Key For Notepad++ FTAs
Registry Value Settings -> Target path:   SOFTWARE\Classes\Applications\notepad++.exe\shell\open\command
Registry Value Settings -> Target name:   ##DefaultRegValue##
Registry Value Settings -> Target type:   REG_SZ
Registry Value Settings -> Target value:  "C:\Program Files\Notepad++\notepad++.exe" "%1"

Anleitungen für andere Deployment Optionen (GPO, VMware UEM, etc.) findet ihr hier.

SetUserFTA.exe get

SetUserFTA.exe lässt sich nicht nur zur Konfiguration von FTAs nutzen, sondern zu Troubleshooting-Zwecken auch, um die aktuellen FTAs eines Users auszugeben. So kann z.B. per External Task mit WEM die aktuelle FTA exportiert werden:

SetUserFTA.exe get > %HOMEDRIVE%%HOMEPATH%\Desktop\UserFTA.txt

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.