Wie können wir helfen?

Kategorien
Inhalt

Windows 10 GPO Standardprogramme festlegen

Navigation:
< zurück

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

Adobe Acrobate Reader DC 
Dateityp- und Protokollzuordnungen
Windows 10 GPO Standardprogramme festlegen 5

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
}
Windows-Fotoanzeige 
Dateityp- und Protokollzuordnungen
Windows 10 GPO Standardprogramme festlegen 6

Einstellungen> Apps > Standard-Apps > Standardeinstellungen nach App festlegen > Windows Media Player

Windows Media Player
Dateityp- und Protokollzurdnungen
Windows 10 GPO Standardprogramme festlegen 7

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.

Konfogurationsdatei für Standartzuordnungen festlegen
Windows 10 GPO Standardprogramme festlegen 8

Weitere Informationen:

5 Kommentare

  1. Jasper

    Vielen Dank für die gute Aufbereitung. Das war sowohl lehr- als auch hilfreich.

    Antworten
  2. Jens

    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.

    Antworten
    • Thomas Hetznecker

      Hallo Jens,

      tatsächlich leider nicht.
      Solche eine Funktion müsste der Client selbst anbieten, über Windows ist dies ohne Umwege nicht möglich.

  3. mw

    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” ?

    Antworten
    • Thomas Hetznecker

      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.

Kommentar absenden

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