MS Edge Chromium auf CVAD Server VDA

Edge Chromium CVAD1912 LTSR
Edge Chromium CVAD1912 LTSR

Kurz notiert: MS Edge Chromium auf Citrix Virtual Apps & Desktops serverbasierten Betriebssystemen.

Ein erster (und neugieriger) Kunde wollte gerne den neuen Edge Chromium in seiner CVAD 1912 LTSR Farm bereitstellen. Leider ist er dabei auf ein leeres, weißes Fenster und viele MSEdge.exe Prozesse gestoßen.

Leeres Edge Fenster und viele Prozesse
Leeres Edge Fenster und viele Prozesse

Ich nutze den neuen Microsoft Edge auf meiner dedizierten VM via „Remote PC Access“ und vermutete den Fehler vorerst auf dem Serverbetriebssystem. Ein kurzer Test auf einem guten, alten (nicht Citrix) Terminalserver ergab allerdings einen funktionierenden Edge. Etwas Recherche im Citrix Forum später brachte die Erleuchtung: „Citrix API Hooks“

Key: HKLM\SYSTEM\CurrentControlSet\services\CtxUvi 
Value Name: UviProcessExcludes 
Type: REG_SZ 
Value: badapp1.exe;badlongname.exe;badapp2.exe 

Der Wert-Name „UviProcessExcludes“ enthält in der Regel bereits verschiedene „badapps.exe“. Hier sollte am Ende des Strings einfach „;msedge.exe;“ ergänzt werden. In meinem Fall sieht der Wert (der per GPP Registry auf die VDAs kommt) dann folgendermaßen aus:

Key: HKLM\SYSTEM\CurrentControlSet\services\CtxUvi 
Value Name: UviProcessExcludes 
Type: REG_SZ 
Value: LsaIso.exe;BioIso.exe;FsIso.exe;sppsvc.exe;vmsp.exe;msedge.exe;

Update: Da mittlerweile eine Reihe weiterer Kunden auf den Microsoft Edge updaten, gibt es auch erste Probleme durch das komplette Deaktivieren des Hookings per „UviProcessExcludes“. Ein Beispiel wäre die gute alte DATEV SmartCard bzw. der DATEV mIDentity in einer Citrix Session. Hier hat sich herausgestellt, dass es ausreicht das „SfrHooking“ (Special Folder Redirection) für die „msedge.exe“ zu deaktivieren. Anbei ein kleines PowerShell Script, was die erste Mehtode (UviProcessExcludes) prüft und ggfs. korrigiert und dann die entsprechenden SfrHooks für den Edge setzt:

$RegUviProcExcl = Get-ItemPropertyValue `
    -Path "HKLM:\SYSTEM\CurrentControlSet\Services\CtxUvi" `
    -Name "UviProcessExcludes" `
    -ErrorAction SilentlyContinue
if($RegUviProcExcl -match "msedge.exe;"){
    Write-Output "Bereinige ""HKLM:\SYSTEM\CurrentControlSet\Services\CtxUvi"" REG_SZ ""UviProcessExcludes"""
    $RegUviProcExcl = $RegUviProcExcl.Replace("msedge.exe;","")
    Set-ItemProperty `
        -Path "HKLM:\SYSTEM\CurrentControlSet\Services\CtxUvi" `
        -Name "UviProcessExcludes" `
        -Value $RegUviProcExcl |
            Out-Null
} else{
    Write-Output """msedge.exe;"" nicht in ""UviProcessExcludes"" gesetzt -> Ok."
}

if(Test-Path -Path "HKLM:\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\SfrHook"){
    if(-not (Test-Path -Path "HKLM:\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\SfrHook\msedge.exe")){
        Write-Output "Erstelle ""HKLM:\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\SfrHook\msedge.exe"""
        New-Item `
            -Path "HKLM:\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\SfrHook" `
            -Name "msedge.exe" |
                Out-Null
    } else{
        Write-Output """msedge.exe"" bereits in ""HKLM:\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\SfrHook"" gesetzt -> Ok."
    }
} else{
    Write-Output """HKLM:\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\SfrHook"" nicht vorhanden! Manuel prüfen!"
}

if(Test-Path -Path "HKLM:\SOFTWARE\WOW6432Node\Citrix\CtxHook\AppInit_Dlls\SfrHook"){
    if(-not (Test-Path -Path "HKLM:\SOFTWARE\WOW6432Node\Citrix\CtxHook\AppInit_Dlls\SfrHook\msedge.exe")){
        Write-Output "Erstelle ""HKLM:\SOFTWARE\WOW6432Node\Citrix\CtxHook\AppInit_Dlls\SfrHook\msedge.exe"""
        New-Item `
            -Path "HKLM:\SOFTWARE\WOW6432Node\Citrix\CtxHook\AppInit_Dlls\SfrHook" `
            -Name "msedge.exe" |
                Out-Null
    } else{
        Write-Output """msedge.exe"" bereits in ""HKLM:\SOFTWARE\WOW6432Node\Citrix\CtxHook\AppInit_Dlls\SfrHook"" gesetzt -> Ok."
    }
} else{
    Write-Output """HKLM:\SOFTWARE\WOW6432Node\Citrix\CtxHook\AppInit_Dlls\SfrHook"" nicht vorhanden! Manuel prüfen!"
}

3 Kommentare

    1. Hallo Jan,

      sehr gutes Ps-Script.
      Ich bin trotzdem am verzweifeln.
      Sobald die Einstellungen (mit PS, mit GPO, oder per Hand) in der CitrixVDA 2016 sind, funktioniert der Edge einwandfrei (auch ohne Neustart oder gpupdate nach ca. 5 Sekunden).
      Leider bleibt bis zu einem reboot der VM der Anmeldebildschirm für neue Anmeldungen grau.

      viele Grüße
      Mario

      1. Hi Mario,

        danke. 🙂
        Sobald du im „SfrHook“ den „msedge.exe“ Key erstellst kann sich niemand mehr anmelden? Nach einem Reboot der VDA ist dann aber alles gut oder bleibt das Problem bestehen?

        Gruß
        Jan

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

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