Wie können wir helfen?
Windows 10 GPO Standardprogramme festlegen
Gilt für: Windows 10, Windows Server 2016, Windows Server 2019
Unter Windows 10 kann der Benutzer unter „Einstellungen > Apps > Standard-Apps“ Programme als Standard zuordnen. Doch in einer Unternehmensumgebung ist meist eine zentrale Richtlinie für die Festlegung der Standardprogramme erwünscht.
Die zentrale Festlegung für Windows 10 bei folgenden Standardprogrammen:
- Adobe Acrobat Reader DC
- Windows-Fotoanzeige
- Windows Media Player
Seit Windows 8 und Windows Server 2012 ist es möglich, Dateitypen einem Standardprogramm mittels GPO in einer Windows-Domäne zuzuordnen. Die gleiche Richtlinie gilt für Windows 8.1, Windows Server 2012 R2, Windows 10, Windows Server 2016 und Windows Server 2019.
1. Manuelle Festlegung der Standardprogramme an einem Test-Client
Einstellungen> Apps > Standard-Apps > Standardeinstellungen nach App festlegen > Adobe Acrobat Reader DC
Einstellungen> Apps > Standard-Apps > Standardeinstellungen nach App festlegen > Windows-Fotoanzeige
Die Zuordnung der Dateitypen wurde unter Windows 10 für die Windows-Fotoanzeige auf .tif und .tiff reduziert.
In einer administrativen PowerShell können diese Werte in der Registry entsprechend angepasst werden:
$HKLMM = "HKLM:\SOFTWARE\Microsoft"
$PF = $env:ProgramFiles
New-PSDrive -Name HKCR Registry HKEY_CLASSES_ROOT -ErrorAction SilentlyContinue | Out-Null
$Arr1 = "Bitmap", "Gif", "JFIF", "Jpeg", "Png", "Wdp"
$Arr2 = "bmp", "gif", "dib", "jfif", "jpe", "jpg", "jxr", "wdp", "tif", "tiff"
$Name1 = "Windows Photo Viewer"
$Name2 = "PhotoViewer.FileAssoc"
$Name3 = "$PF\$Name1\PhotoViewer.dll"
$Reg1 = "$HKLMM\$Name1\Capabilities\FileAssociations"
if (!(Test-Path $Reg1)) { New-Item -Force -Path $Reg1 }
$Arr1 | ForEach-Object {
$Reg = "HKCR:\$Name2.$_"
$Reg1Arr1 = "$Reg\DefaultIcon"
$Reg2Arr1 = "$Reg\shell\open"
$Reg3Arr1 = "$Reg2Arr1\command"
$Reg4Arr1 = "$Reg2Arr1\DropTarget"
if ($_ -like "B*") { $ValFTN = "3056"; $ValDI = "70" }
if ($_ -like "G*") { $ValFTN = "3057"; $ValDI = "83" }
if ($_ -like "J*") { $ValFTN = "3055"; $ValDI = "72" }
if ($_ -like "P*") { $ValFTN = "3057"; $ValDI = "71" }
if ($_ -like "W*") { $ValFTN = $null; $ValDI = "70" }
if (!(Test-Path $Reg)) { New-Item -Force -Path $Reg }
if (!(Test-Path $Reg1Arr1)) { New-Item -Force -Path $Reg1Arr1 }
if (!(Test-Path $Reg2Arr1)) { New-Item -Force -Path $Reg2Arr1 }
if (!(Test-Path $Reg3Arr1)) { New-Item -Force -Path $Reg3Arr1 }
if (!(Test-Path $Reg4Arr1)) { New-Item -Force -Path $Reg4Arr1 }
(New-ItemProperty -Path $Reg -Force -Name "EditFlags" -PropertyType DWORD -Value 65536).PSPath
(New-ItemProperty -Path $Reg -Force -Name "ImageOptionFlags" -PropertyType DWORD -Value 1).PSPath
if ($ValFTN) { (New-ItemProperty -Path $Reg -Force -Name "FriendlyTypeName" -PropertyType ExpandString -Value "@$Name3,-$ValFTN").PSPath }
if ($ValDI) { (New-ItemProperty -Path $Reg1Arr1 -Force -Name "(Default)" -PropertyType String -Value "$SR32\imageres.dll,-$ValDI").PSPath }
(New-ItemProperty -Path $Reg2Arr1 -Force -Name "MuiVerb" -PropertyType ExpandString -Value "@$Name3,-3043").PSPath
(New-ItemProperty -Path $Reg3Arr1 -Force -Name "(Default)" -PropertyType ExpandString -Value "$SR32\rundll32.exe ""$Name3"", ImageView_Fullscreen %1").PSPath
(New-ItemProperty -Path $Reg4Arr1 -Force -Name "Clsid" -PropertyType String -Value "{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}").PSPath
}
$Arr2 | ForEach-Object {
if ($_ -like "b*" -or $_ -like "d*") { $ValST = "Bitmap" }
if ($_ -like "g*") { $ValST = "Gif" }
if ($_ -like "jf*") { $ValST = "JFIF" }
if ($_ -like "jp*" -or $_ -like "jx*") { $ValST = "Jpeg" }
if ($_ -like "p*") { $ValST = "Png" }
if ($_ -like "t*") { $ValST = "Tiff" }
if ($_ -like "w*") { $ValST = "Wdp" }
(New-ItemProperty -Path $Reg1 -Force -Name ".$_" -PropertyType String -Value "$Name2.$ValST").PSPath
}
Einstellungen> Apps > Standard-Apps > Standardeinstellungen nach App festlegen > Windows Media Player
2. Export der Einstellungen für die Standardanwendungszuordnungen mittels DISM
Mit einer administrativen PowerShell muss die Einstellungen für die Standardanwendungszuordnungen in eine XML-Datei auf einem Server-Share (Empfehlung DFS-Verzeichnis) exportiert werden.
Dism /Online /Export-DefaultAppAssociations:\\Server\Share\AppAssoc.XML
3. Anpassung der exportierten XML-Datei
Die XML-Datei sollte nach den notwendigen Dateitypen angepasst werden. Es sollten die Zeilen der gewünschten Standardprogramme erhalten bleiben:
- Adobe Acrobat Reader DC
- Windows-Fotoanzeige
- Windows Media Player
4. GPO aktivieren
Computerkonfiguration\Richtlinien\Administrative Vorlagen\Windows-Komponenten\Datei-Explorer\Konfigurationsdatei für Standartzuordnungen festlegen.
Vielen Dank für die gute Aufbereitung. Das war sowohl lehr- als auch hilfreich.
Gibt es auch die Möglichkeit, eine einzelne Zuordnung zu einem Client hinzuzufügen, ohne alle anderen anzupassen?
Beispiel: Endung .xyz soll dem Programm irgendwas.exe zugeordnet werden, aber alle anderen sollen bleiben wie sie sind.
Hallo Jens,
tatsächlich leider nicht.
Solche eine Funktion müsste der Client selbst anbieten, über Windows ist dies ohne Umwege nicht möglich.
1. Ist dieses Vorgehen auch für Windows 10 22h2 und Windows 11 23H2 noch aktuell?
2. Werden diese Standard-Werte nur für neue Benutzerkonten übernommen oder auch für bestehende?
3. Lassen sich hier “nur” die Datei und Protokoll-Zuordnungen so setzten oder auch die “Standard-Apps” ?
1: Das Vorgehen ist so nach wie vor anwendbar.
2: Die GPO wird für alle Objekte zu welcher Sie zugeordnet ist angewandt – ob bestehend oder neu spielt keine Rolle.
3: Die Standard-Apps sind nur ein grafisches Overlay für die darunterliegende Protokoll-Datei Zuordnung.