{"id":2130,"date":"2024-03-25T23:06:01","date_gmt":"2024-03-25T22:06:01","guid":{"rendered":"https:\/\/hitco.at\/blog\/?p=2130"},"modified":"2025-10-30T14:53:18","modified_gmt":"2025-10-30T13:53:18","slug":"windows-userchoice-protection-driver-ucpd","status":"publish","type":"post","link":"https:\/\/hitco.at\/blog\/windows-userchoice-protection-driver-ucpd\/","title":{"rendered":"Windows UserChoice Protection Driver UCPD \/ UCPD.sys \/ UCPDMgr.exe"},"content":{"rendered":"\n<p>Sp\u00e4testens mit den M\u00e4rz 2024 Updates d\u00fcrfte Microsoft bei ziemlich allen Windows 10 und Windows 11 Editionen einen &#8222;UserChoice Protection Driver&#8220; (Kurz-Name &#8222;UCPD&#8220;) auf die Systeme aufgebracht haben.<\/p>\n\n\n\n<p>Es handelt sich hierbei um einen Filter-Treiber, der den schreibenden Zugriff auf diverse &#8222;UserChoice&#8220; Registry-Keys unterbinden soll. Was &#8222;UserChoice&#8220; bedeutet habe ich <a href=\"https:\/\/hitco.at\/blog\/dateiendungen-automatisiert-unter-windows-10-mit-den-gewuenschten-applikationen-verknuepfen\/\" data-type=\"post\" data-id=\"1058\" target=\"_blank\" rel=\"noreferrer noopener\">vor vielen Jahren (im Jahr 2017) in diesem Blog-Post erl\u00e4utert<\/a>. Kurzfassung: es geht hierbei darum zu konfigurieren, welches Programm z.B. als Default-Browser (HTTP, HTTPS URL-Associations) bzw. z.B. als Default-PDF-Viewer (.pdf File-Extension) unter Windows konfiguriert ist.<\/p>\n\n\n\n<p>Meiner Beobachtung und Recherchen nach d\u00fcrfte dieser Treiber beginnend ab J\u00e4nner 2024 bis M\u00e4rz 2024 in Wellen ausgerollt und aktiviert worden sein. Mittlerweile d\u00fcrfte dieser zumindest auf allen &#8222;europ\u00e4ischen&#8220; Windows 10 &amp; 11 Systemen vorhanden und aktiv sein.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pr\u00fcfung ob der &#8222;UserChoice Protection Driver&#8220; vorhanden ist bzw. l\u00e4uft:<\/h3>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background has-small-font-size\"><code>C:\\&gt;<strong>sc query ucpd<\/strong>\n\nSERVICE_NAME: ucpd\n        TYPE               : 2  FILE_SYSTEM_DRIVER\n        <strong>STATE              <\/strong>: 4  <strong>RUNNING<\/strong>\n                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)\n        WIN32_EXIT_CODE    : 0  (0x0)\n        SERVICE_EXIT_CODE  : 0  (0x0)\n        CHECKPOINT         : 0x0\n        WAIT_HINT          : 0x0<\/code><\/pre>\n\n\n\n<p>Pr\u00fcfung der Dienst-Konfiguration von UCPD &#8230; <code><strong>Start Type: SYSTEM_START (1)<\/strong><\/code><\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background has-small-font-size\"><code>C:\\&gt;<strong>sc qc ucpd<\/strong>\n&#91;SC] QueryServiceConfig ERFOLG\n\nSERVICE_NAME: ucpd\n        TYPE               : 2  FILE_SYSTEM_DRIVER\n        <strong>START_TYPE         : 1   SYSTEM_START<\/strong>\n        ERROR_CONTROL      : 1   NORMAL\n        BINARY_PATH_NAME   : system32\\drivers\\UCPD.sys\n        LOAD_ORDER_GROUP   : FSFilter Activity Monitor\n        TAG                : 0\n        DISPLAY_NAME       : UCPD\n        DEPENDENCIES       :\n        SERVICE_START_NAME :<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Auswirkungen am Beispiel SetUserFTA.exe<\/h3>\n\n\n\n<p>Dieser Filter-Treiber unterbindet, dass Software die nicht von Microsoft stammt schreibend auf diverse &#8222;UserChoice&#8220; Registry-Keys zugreifen k\u00f6nnen, ein Process-Monitor zeigt: ACCESS-DENIED.<\/p>\n\n\n\n<p>Beispiel: Das popul\u00e4re <a href=\"https:\/\/kolbi.cz\/blog\/2017\/10\/25\/setuserfta-userchoice-hash-defeated-set-file-type-associations-per-user\/\" data-type=\"link\" data-id=\"https:\/\/kolbi.cz\/blog\/2017\/10\/25\/setuserfta-userchoice-hash-defeated-set-file-type-associations-per-user\/\" target=\"_blank\" rel=\"noreferrer noopener\">SetUserFTA-Tool von Christoph Kolbicz<\/a> in bew\u00e4hrter Version 1.7 kann nun nicht mehr wie gewohnt zur Konfiguration des Default-PDF-Readers verwendet werden. Process-Monitor zeigt <strong>Access-Denied<\/strong> (obwohl die Rechte hierf\u00fcr eigentlich unver\u00e4ndert vorhanden w\u00e4ren):<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_SetUserFTA-ProcMon-Access-Denied.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1194\" height=\"394\" src=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_SetUserFTA-ProcMon-Access-Denied.png\" alt=\"UCPD SetUserFTA.exe RegDeleteKey RegCreateKey ProcMon Access-Denied\" class=\"wp-image-2132\" srcset=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_SetUserFTA-ProcMon-Access-Denied.png 1194w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_SetUserFTA-ProcMon-Access-Denied-300x99.png 300w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_SetUserFTA-ProcMon-Access-Denied-1024x338.png 1024w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_SetUserFTA-ProcMon-Access-Denied-768x253.png 768w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_SetUserFTA-ProcMon-Access-Denied-80x26.png 80w\" sizes=\"auto, (max-width: 1194px) 100vw, 1194px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Wie funktioniert dieser Filter-Treiber?<\/h2>\n\n\n\n<p>Der UCPD Filter-Treiber f\u00fcgt sich auf einer <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows-hardware\/drivers\/ifs\/allocated-altitudes\" data-type=\"link\" data-id=\"https:\/\/learn.microsoft.com\/en-us\/windows-hardware\/drivers\/ifs\/allocated-altitudes\" target=\"_blank\" rel=\"noreferrer noopener\">definierten &#8222;Altitude&#8220; (&#8222;H\u00f6he&#8220;)<\/a> in das Gef\u00fcge der Microsoft (bzw. Dritthersteller-) Filter-Treiber ein, dies kann z.B. wie folgt gepr\u00fcft werden:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background has-small-font-size\"><code>C:\\&gt;<strong>fltMC.exe filters<\/strong>\n\nFiltername                     Anzahl von Instanzen    H\u00f6he    Frame\n-----------------------------  --------------------    ----    -----\nbindflt                                 1       409800         0\nFsDepends                              13       407000         0\n<strong>UCPD                                   15       385250.5       0<\/strong>\nPROCMON24                               4       385200         0\nWdFilter                               15       328010         0\nstorqosflt                              2       244000         0\nwcifs                                   3       189900         0\nCldFlt                                  4       180451         0\nFileCrypt                               0       141100         0\nluafv                                   1       135000         0\nnpsvctrig                               1        46000         0\nWof                                    12        40700         0\nFileInfo                               15        40500         0<\/code><\/pre>\n\n\n\n<p>Den vollen Namen eines Filter-Treibers ermittelt man auf der CmdLine am schnellsten mittels &#8222;<code>sc qc &lt;DienstName&gt;<\/code>&#8222;:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\">bindflt &#8230; Windows Bind Filter Driver \/ FSFilter Top<\/li>\n\n\n\n<li class=\"has-small-font-size\">FsDepends &#8230; File System Dependency Minifilter \/ FSFilter Top<\/li>\n\n\n\n<li class=\"has-small-font-size\"><strong>UCPD &#8230; User Choice Protection Driver \/ FSFilter Activity Monitor<\/strong><\/li>\n\n\n\n<li class=\"has-small-font-size\">PROCMON24 &#8230; SysInternals Process Monitor<\/li>\n\n\n\n<li class=\"has-small-font-size\">WdFilter &#8230; Microsoft Defender Antivirus-Minifiltertreiber \/ FSFilter Anti-Virus<\/li>\n\n\n\n<li class=\"has-small-font-size\">storqosflt &#8230; QoS-Filter f\u00fcr Speicher \u2013 Treiber \/ FSFilter Quota Management<\/li>\n\n\n\n<li class=\"has-small-font-size\">wcifs &#8230; Windows Container Isolation \/ FSFilter Virtualization<\/li>\n\n\n\n<li class=\"has-small-font-size\">CldFlt &#8230; Windows Cloud Files Filter Driver \/ FSFilter HSM<\/li>\n\n\n\n<li class=\"has-small-font-size\">FileCrypt &#8230; FileCrypt \/ FSFilter Encryption<\/li>\n\n\n\n<li class=\"has-small-font-size\">luafv &#8230; UAC-Dateivirtualisierung \/ FSFilter Virtualization<\/li>\n\n\n\n<li class=\"has-small-font-size\">npsvctrig &#8230; Named pipe service trigger provider<\/li>\n\n\n\n<li class=\"has-small-font-size\">FileInfo &#8230; File Information FS MiniFilter \/ FSFilter Bottom<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Welche Registry-Zugriffe unterbindet UCPD?<\/h3>\n\n\n\n<p>Praktische Tests und De-Assemblierung\/De-Kompilierung sowie String-Analyse zeigen, dass augenscheinlich L\u00f6sch- und Schreib-Operationen auf folgende Registry-Keys derzeit unterbunden werden:<\/p>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code><strong># SetProtectRuleOnStart Funktion setzt offenkundig Filter f\u00fcr folgende HKCU Registry-Keys:<\/strong>\nSoftware\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice\nSoftware\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoiceLatest\nSoftware\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoicePrevious\nSoftware\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\https\\UserChoice\nSoftware\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\https\\UserChoiceLatest\nSoftware\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\https\\UserChoicePrevious\nSoftware\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.pdf\\UserChoice\nSoftware\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.pdf\\UserChoiceLatest\nSoftware\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.pdf\\UserChoicePrevious\n\n# Nachtrag vom 08.04.2024: Auch die DeviceRegion ist von UCPD gesch\u00fctzt:\nHKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Control Panel\\DeviceRegion\\DeviceRegion<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Welche Prozesse werden blockiert, bzw. welche Prozesse d\u00fcrfen noch zugreifen?<\/h3>\n\n\n\n<p>Hier wird offenbar wie folgt vorgegangen: Es wird gepr\u00fcft, ob es sich um ein Microsoft signiertes, zum Windows-Betriebssystem geh\u00f6rendes File handelt, und dieses darf nicht auf der &#8222;DenyList&#8220; stehen:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsMicrosoftSignedFile-Function.png\"><img loading=\"lazy\" decoding=\"async\" width=\"348\" height=\"415\" src=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsMicrosoftSignedFile-Function.png\" alt=\"UCPD - UserChoice Protection Driver, IsMicrosoftSigned und IsInDenyList Pr\u00fcfung\" class=\"wp-image-2135\" srcset=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsMicrosoftSignedFile-Function.png 348w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsMicrosoftSignedFile-Function-252x300.png 252w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsMicrosoftSignedFile-Function-80x95.png 80w\" sizes=\"auto, (max-width: 348px) 100vw, 348px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Ob es sich um ein Microsoft-signiertes File handelt wird offenbar wie folgt gepr\u00fcft:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsMicrosoftSignedFileDetails-Function.png\"><img loading=\"lazy\" decoding=\"async\" width=\"420\" height=\"554\" src=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsMicrosoftSignedFileDetails-Function.png\" alt=\"UCPD - UserChoice Protection Driver, IsMicrosoftSigned Pr\u00fcfung\" class=\"wp-image-2137\" srcset=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsMicrosoftSignedFileDetails-Function.png 420w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsMicrosoftSignedFileDetails-Function-227x300.png 227w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsMicrosoftSignedFileDetails-Function-80x106.png 80w\" sizes=\"auto, (max-width: 420px) 100vw, 420px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Und hierf\u00fcr allzu leicht geeignete Werkzeuge sind \u00fcber eine DenyList ausgeschlossen:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsInDenyList-Function.png\"><img loading=\"lazy\" decoding=\"async\" width=\"349\" height=\"488\" src=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsInDenyList-Function.png\" alt=\"UCPD - UserChoice Protection Driver, IsInDenyListPr\u00fcfung\" class=\"wp-image-2138\" srcset=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsInDenyList-Function.png 349w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsInDenyList-Function-215x300.png 215w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_IsInDenyList-Function-80x112.png 80w\" sizes=\"auto, (max-width: 349px) 100vw, 349px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Konkret handelt es sich hierbei in der mit M\u00e4rz 2024 aktuellen UCPD.sys Version um folgende Microsoft Windows Prozesse:<\/p>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code><strong># IsInDenyList Prozesse<\/strong>\n*\\dllhost.exe\n*\\reg.exe\n*\\rundll32.exe\n*\\powershell.exe\n*\\regedit.exe\n*\\wscript.exe\n*\\cscript.exe<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">L\u00e4sst sich der UserChoice Protection Driver deaktivieren?<\/h2>\n\n\n\n<p>Ja, allerdings nicht im laufenden Betrieb &#8211; dies wird verweigert (bzw. dies ist im Filter-Treiber nicht implementiert). Zur Deaktivierung muss daher die Startart auf &#8222;Deaktiviert&#8220; konfiguriert und Windows anschlie\u00dfend neu gestartet werden. Danach l\u00e4uft der Treiber nicht mehr:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background has-small-font-size\"><code>C:\\&gt;<strong>sc config UCPD start= disabled<\/strong>\n&#91;SC] ChangeServiceConfig ERFOLG\n\nC:\\&gt;<strong>sc qc UCPD<\/strong>\n&#91;SC] QueryServiceConfig ERFOLG\n\nSERVICE_NAME: UCPD\n        TYPE               : 2  FILE_SYSTEM_DRIVER\n        <strong>START_TYPE         : 4   DISABLED<\/strong>\n        ERROR_CONTROL      : 1   NORMAL\n        BINARY_PATH_NAME   : system32\\drivers\\UCPD.sys\n        LOAD_ORDER_GROUP   : FSFilter Activity Monitor\n        TAG                : 0\n        DISPLAY_NAME       : UCPD\n        DEPENDENCIES       :\n        SERVICE_START_NAME :<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">OK, Deaktivieren klappt &#8211; aber der Treiber reaktiviert sich wieder!<\/h3>\n\n\n\n<p>Ja, diese Beobachtung ist korrekt. Microsoft hat einen TaskPlaner-Job Namens &#8222;Microsoft \\ Windows \\ AppxDeplomentClient \\ <strong>UCPD velocity<\/strong>&#8220; hinterlegt, der nach jeder Benutzer-Anmeldung und 10min Idle-Time des System durch Aufruf des &#8222;<code><strong>UCPDMgr.exe<\/strong><\/code>&#8220; den Treiber wieder rekonfiguriert. Achtung: Dieser TaskPlaner-Job ist nur mit Administrator-Rechten (nicht mit User-Rechten) sichtbar! <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_TaskPlaner-UCPD-Velocity.png\"><img loading=\"lazy\" decoding=\"async\" width=\"989\" height=\"513\" src=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_TaskPlaner-UCPD-Velocity.png\" alt=\"\" class=\"wp-image-2139\" srcset=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_TaskPlaner-UCPD-Velocity.png 989w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_TaskPlaner-UCPD-Velocity-300x156.png 300w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_TaskPlaner-UCPD-Velocity-768x398.png 768w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_TaskPlaner-UCPD-Velocity-80x41.png 80w\" sizes=\"auto, (max-width: 989px) 100vw, 989px\" \/><\/a><\/figure>\n\n\n\n<p>Um eine Reaktivierung von UCPD zu verhindern muss also auch dieser TaskPlaner-Job deaktiviert werden:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background has-small-font-size\"><code>C:\\&gt;<strong>schtasks.exe \/change \/Disable \/TN \"\\Microsoft\\Windows\\AppxDeploymentClient\\UCPD velocity\"<\/strong>\nERFOLGREICH: Die Parameter der geplanten Aufgabe \"\\Microsoft\\Windows\\AppxDeploymentClient\\UCPD velocity\" wurden ge\u00e4ndert.<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">UCPDMgr.exe pr\u00fcft und korrigiert offenkundig folgendes:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Start-Art des Dienstes &#8222;SYSTEM_START&#8220; &#8230; wenn nicht korrekt wird diese Konfiguration hergestellt<\/li>\n\n\n\n<li>Wert des Registry-Keys HKLM\\SYSTEM\\CurrentControlSet\\Services\\UCPD\\FeatureV2 &#8230; wird auf &#8222;2&#8220; konfiguriert sofern nicht gesetzt.<\/li>\n\n\n\n<li>L\u00e4uft der Dienst? Wenn nein wird dieser gestartet. Ein Starten des Filter-Treibers ist jederzeit im laufenden Betrieb m\u00f6glich, ein Beenden hingegen nicht &#8211; hierf\u00fcr muss wie oben bereits erl\u00e4utert die Startart auf DISABLED konfiguriert und Windows neu gestartet werden.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Registry: HKLM\\SYSTEM\\CurrentControlSet\\Services\\UCPD =&gt; \"FeatureV2\" =&gt; \"2\"<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_Service-Registry.png\"><img loading=\"lazy\" decoding=\"async\" width=\"727\" height=\"279\" src=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_Service-Registry.png\" alt=\"\" class=\"wp-image-2140\" srcset=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_Service-Registry.png 727w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_Service-Registry-300x115.png 300w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_Service-Registry-80x31.png 80w\" sizes=\"auto, (max-width: 727px) 100vw, 727px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Was hat es mit &#8222;FeatureV2&#8220; auf sich?<\/h3>\n\n\n\n<p>Offenbar besteht mittels des &#8222;<code>FeatureV2<\/code>&#8220; Setting die M\u00f6glichkeit den Filter-Treiber in einen nicht-wirksamen Modus zu schalten. Getesteter Weise wird auch bei gestartetem Filter-Treiber und &#8222;<code>FeatureV2<\/code>&#8220; Wert &#8222;<code>0<\/code>&#8220; kein Zugriff blockiert, w\u00e4hrend mit Wert &#8222;<code>2<\/code>&#8220; sich der Filter-Treiber blockierend wie beschrieben verh\u00e4lt.<\/p>\n\n\n\n<p>Achtung: Dieser <code>FeatureV2<\/code> Wert wird nur beim Filter-Treiber-Start ausgelesen, eine \u00c4nderung bedingt zum Test also einen Neustart von Windows.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Gibt es M\u00f6glichkeiten den Filter-Treiber zu umgehen?<\/h2>\n\n\n\n<p><strong>Ja<\/strong>, neben der Deaktivierung bestehen zahlreiche Schlupfl\u00f6cher wie der Filter-Treiber umgangen werden kann &#8230; aber dies zu behandeln ist vorerst nicht Teil dieses Blog-Posts.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wozu macht Microsoft das?<\/h2>\n\n\n\n<p>Nun ja, dar\u00fcber kann man &#8211; in Ermangelung von Dokumentation seitens Microsoft &#8211; nur spekulieren. Best Guess:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Um zu verhindern, dass Software wie z.B. Adobe Reader, Firefox, Chrome sich selbst als &#8222;Default-Anwendung&#8220; konfigurieren kann.<\/li>\n\n\n\n<li>Um zu verhindern, dass Administratoren mit Tools wie z.B. SetUserFTA.exe das System f\u00fcr den Benutzer passend vorkonfigurieren bzw. gescriptet rekonfigurieren.<\/li>\n\n\n\n<li>Um damit Auflagen der EU betreffend &#8222;<strong>U<\/strong>nfair <strong>C<\/strong>ommercial <strong>P<\/strong>ractices <strong>D<\/strong>irective&#8220; (man beachte, dass diese EU-Richtlinie ebenfalls die Abk\u00fcrzung <strong>UCPD<\/strong> tr\u00e4gt!) umzusetzen &#8230; und zwar vermutlich in einer Art und Weise, die es nur noch dem Benutzer interaktiv mittels Wizzard bzw. Explorer erlaubt diese Auswahl welche Default-Programme genutzt werden sollen festzulegen.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Betroffene Anwendungsf\u00e4lle &amp; Anwender-Feedback<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Das popul\u00e4re Tool <a href=\"https:\/\/kolbi.cz\/blog\/2017\/10\/25\/setuserfta-userchoice-hash-defeated-set-file-type-associations-per-user\/\">SetUserFTA in Version 1.7<\/a>, jedoch arbeitet Christoph Kolbicz bereits an einer v2.0 um die Thematik zu umgehen. Er war es auch, der <a href=\"https:\/\/twitter.com\/_kolbicz\/status\/1761136487062474860\" data-type=\"link\" data-id=\"https:\/\/twitter.com\/_kolbicz\/status\/1761136487062474860\" target=\"_blank\" rel=\"noreferrer noopener\">bereits im Februar 2024 die Existenz und Wirkungsweise des UserChoice Protection Drivers entdeckte<\/a>.<\/li>\n\n\n\n<li><a href=\"https:\/\/kb.vmware.com\/s\/article\/97169\" target=\"_blank\" rel=\"noreferrer noopener\">VMWare Dynamic Environment Manager<\/a> &#8230; dort ist im <a href=\"https:\/\/kb.vmware.com\/s\/article\/97169\" target=\"_blank\" rel=\"noreferrer noopener\">VMWare-KB-Artikel<\/a> allerdings keinerlei L\u00f6sungsm\u00f6glichkeit verzeichnet, offenbar wurde mein Blog-Post also noch nicht gelesen<\/li>\n\n\n\n<li>Das <a href=\"https:\/\/github.com\/DanysysTeam\/PS-SFTA\" target=\"_blank\" rel=\"noreferrer noopener\">PowerShell PS-SFTA Tool<\/a>, siehe <a href=\"https:\/\/github.com\/DanysysTeam\/PS-SFTA\/issues\/33\" target=\"_blank\" rel=\"noreferrer noopener\">Issue #33<\/a><\/li>\n\n\n\n<li>Das <a href=\"https:\/\/github.com\/farag2\/Sophia-Script-for-Windows\/\" target=\"_blank\" rel=\"noreferrer noopener\">Sophia Script for Windows<\/a> (Best\u00e4tigung der Betroffenheit <a href=\"https:\/\/github.com\/DanysysTeam\/PS-SFTA\/issues\/33#issuecomment-2023794640\" target=\"_blank\" rel=\"noreferrer noopener\">siehe hier<\/a>).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Weiterf\u00fchrende Informationen<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Seit 03.04.2024 ist nun auch <strong>der exzellente Blog-Post von <a href=\"https:\/\/www.linkedin.com\/in\/kolbicz\/\" target=\"_blank\" rel=\"noreferrer noopener\">Christoph Kolbicz<\/a>&nbsp;hierzu online: <a href=\"https:\/\/kolbi.cz\/blog\/2024\/04\/03\/userchoice-protection-driver-ucpd-sys\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/kolbi.cz\/blog\/2024\/04\/03\/userchoice-protection-driver-ucpd-sys\/<\/a><\/strong><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Medienberichterstattung (Auszug)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Am 07.04.2024 erschien von <a href=\"https:\/\/www.bleepingcomputer.com\/news\/microsoft\/new-windows-driver-blocks-software-from-changing-default-web-browser\/\" data-type=\"link\" data-id=\"https:\/\/www.bleepingcomputer.com\/news\/microsoft\/new-windows-driver-blocks-software-from-changing-default-web-browser\/\" target=\"_blank\" rel=\"noreferrer noopener\">BleepingComputer im Wesentlichen ein WriteUp<\/a> des Blog-Posts von Christoph Kolbicz inklusive Verweis auf meinen Blog-Post hier. Neue Erkenntnisse liefert der Artikel jedoch keine, Microsoft wurde demnach zwar gebeten eine Stellungnahme abzugeben, wollte sich jedoch angeblich nicht \u00e4u\u00dfern.<\/li>\n\n\n\n<li>Basierend auf dem <a href=\"https:\/\/www.bleepingcomputer.com\/news\/microsoft\/new-windows-driver-blocks-software-from-changing-default-web-browser\/\" target=\"_blank\" rel=\"noreferrer noopener\">Artikel von BleepingComputer<\/a> erschienen in weiterer Folge zig (teils offenbar automatisiert ins Spanische, Portugiesische, Chinesische etc&#8230; \u00fcbersetze) Kopien, viele davon finden sich in der Liste der PingBacks unten. Neue Erkenntnisse hieraus ergeben sich daraus aber freilich keine.<\/li>\n\n\n\n<li>Am 08.04.2024 <a href=\"https:\/\/www.ghacks.net\/2024\/04\/08\/new-sneaky-windows-driver-ucdp-stops-non-microsoft-software-from-setting-defaults\/\" target=\"_blank\" rel=\"noreferrer noopener\">berichtet nun auch ghacks.net<\/a> hier\u00fcber, auch dieser Artikel ist eine Wiedergabe der bereits bekannten Erkenntnisse.<\/li>\n\n\n\n<li>Ebenfalls am 08.04.2024 <a href=\"https:\/\/www.neowin.net\/news\/microsoft-quietly-adds-windows-ucpd-driver-to-block-registry-hacks-for-default-app-switches\/\" target=\"_blank\" rel=\"noreferrer noopener\">berichtet nun auch Neowin.com<\/a> hier\u00fcber, auch dieser Artikel ist eine Zusammenfassung der bereits beschriebenen Erkenntnisse.<\/li>\n\n\n\n<li>Ebenfalls am 08.04.2024 <a href=\"https:\/\/www.techzine.eu\/news\/applications\/118510\/new-windows-driver-blocks-software-that-changes-default-web-browser\/\" target=\"_blank\" rel=\"noreferrer noopener\">berichtet auch techzine.eu<\/a>, der Artikel fasst den Stand der Dinge recht akkurat zusammen.<\/li>\n\n\n\n<li>Am 09.04.2024 <a href=\"https:\/\/www.itmagazine.ch\/artikel\/81957\/Windows-Treiber_unterbindet_Standardbrowser-Aenderung.html\" target=\"_blank\" rel=\"noreferrer noopener\">berichtet das Schweizer IT-Magazine<\/a> hier\u00fcber, auch dieser Artikel ist eine Wiedergabe der bereits bekannten Erkenntnisse.<\/li>\n\n\n\n<li>Am 09.04.2024 <a href=\"https:\/\/www.heise.de\/news\/Microsoft-Neuer-Treiber-schuetzt-Standard-Browser-Einstellung-9678592.html\" data-type=\"link\" data-id=\"https:\/\/www.heise.de\/news\/Microsoft-Neuer-Treiber-schuetzt-Standard-Browser-Einstellung-9678592.html\" target=\"_blank\" rel=\"noreferrer noopener\">berichtet nun auch Heise hier\u00fcber<\/a>, wenngleich der Redakteur den Sachverhalt nur partiell wiedergibt.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Schutz der DeviceRegion &amp; m\u00f6gliches Uninstall des Edge-Browsers in der EU (Nachtrag vom 08.04.2024)<\/h2>\n\n\n\n<p>Der Microsoft Edge Browser lie\u00df sich seit ca. Juni 2023 nicht mehr deinstallieren. Microsoft l\u00e4sst mittlerweile die DeInstallation (z.B. mittels MSIEXEC oder \u00fcber die Systemsteuerung\/Software) des Edge-Browsers zwar wieder zu, allerdings nur wenn das Ger\u00e4t in einem Land der EU lokalisiert ist. Gepr\u00fcft wird dies \u00fcber den Registry-Key <code>HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Control Panel\\DeviceRegion\\<\/code><strong><code>DeviceRegion<\/code> <\/strong>&#8230; wenn dieser z.B. einen Wert von 0x0000000e (Dezimal 14) = \u00d6sterreich\/Austria oder Hex 0x0000005e (Dezimal 94) f\u00fcr Deutschland aufweist, dann ist eine DeInstallation m\u00f6glich. Wert 0x000000f4 (Dezimal 244) = <strong>USA l\u00e4sst hingegen kein Entfernen des Edge-Browsers zu<\/strong>. Es muss sich also um eine <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/intl\/table-of-geographical-locations\" target=\"_blank\" rel=\"noreferrer noopener\">DeviceRegion eines EU-Landes<\/a> handeln.<\/p>\n\n\n\n<p>Und auch dieser <strong><code>DeviceRegion<\/code> <\/strong>Registry-Key kann nicht so einfach automatisiert ge\u00e4ndert werden, da dieser vom <strong>UserChoice Protection Driver ucpd.sys gesch\u00fctzt wird!<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die VMWare-L\u00f6sung <code>VMWare-DEM-FTA-stub.dll<\/code> (Nachtrag vom 11.04.2024)<\/h2>\n\n\n\n<p>Ich habe oben ja bereits angedeutet, dass es freilich zahlreiche Schlupfl\u00f6cher gibt um den Filter-Treiber zu umgehen. Ein <em>relativ billiges<\/em> Schlupfloch hat VMWare gew\u00e4hlt. Da dieses nun ohnehin allgemein bekannt ist (Patch ist allgemein verf\u00fcgbar), kann ich dieses somit auch hier \u00f6ffentlich kommentieren:<\/p>\n\n\n\n<p>Wie oben notiert hat VMWare mit Einf\u00fchrung des UCPD-Treibers dieses Problem hier: <a href=\"https:\/\/kb.vmware.com\/s\/article\/97169\" target=\"_blank\" rel=\"noreferrer noopener\">VMWare Dynamic Environment Manager &#8211; Issue with DEM FTA and Default Browser settings<\/a>.<\/p>\n\n\n\n<p>Als L\u00f6sung hat VMWare am 11.04.2024 nun <a href=\"https:\/\/kb.vmware.com\/sfc\/servlet.shepherd\/version\/download\/0685G00001PG7JQQA1\" target=\"_blank\" rel=\"noreferrer noopener\">UCPD-fix-KB-97169<\/a> bereitgestellt. Wie funktioniert dieser?<\/p>\n\n\n\n<p>VMWare stellt eine <code>vmware-dem-fta-stub.dll<\/code> bereit. Ausgef\u00fchrt wird diese von <strong><code>UCPD-fix.exe<\/code><\/strong><\/p>\n\n\n\n<p>Hierzu wird die von Microsoft signierte <strong><code>rundll.exe<\/code><\/strong> nach <strong><code>UCPD-fix.exe<\/code><\/strong> kopiert. Da dieses File Microsoft signiert ist, wird es vom UCPD-Filtertreiber f\u00fcr den Zugriff zugelassen. Da es nicht mehr <strong><code>rundll.exe<\/code><\/strong> hei\u00dft, ist es nicht in der oben erl\u00e4uterten <code><strong>IsInDenyList<\/strong><\/code> enthalten, darf die Registry-Keys daher \u00e4ndern.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_rundll.png\"><img loading=\"lazy\" decoding=\"async\" width=\"619\" height=\"471\" src=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_rundll.png\" alt=\"\" class=\"wp-image-2204\" srcset=\"https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_rundll.png 619w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_rundll-300x228.png 300w, https:\/\/hitco.at\/blog\/wp-content\/uploads\/UCPD_rundll-80x61.png 80w\" sizes=\"auto, (max-width: 619px) 100vw, 619px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Follow-Up, Neue Lage im Oktober 2025<\/h2>\n\n\n\n<p>Microsoft hat in den vergangenen Monaten erneut die Ma\u00dfnahmen versch\u00e4rft, neue UCPD.sys Treiber-Versionen verteilt, und damit zahlreiche Tricks die m\u00f6glich waren um schreibend auf die gesch\u00fctzten Registry-Keys zuzugreifen damit unterbunden.<\/p>\n\n\n\n<p>Hier eine kleine Auswahl an hervorragenden Analysen hierzu:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Das <a href=\"https:\/\/kolbi.cz\/blog\/\" data-type=\"link\" data-id=\"https:\/\/kolbi.cz\/blog\/\" target=\"_blank\" rel=\"noreferrer noopener\">Blog des UCPD-Gurus Christoph Kolbicz<\/a>, hier insbesonders:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/kolbi.cz\/blog\/2025\/04\/20\/userchoicelatest-microsofts-new-protection-for-file-type-associations\/\" target=\"_blank\" rel=\"noreferrer noopener\">UserChoiceLatest \u2013 Microsoft\u2019s new protection for file type associations<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/kolbi.cz\/blog\/2025\/07\/15\/ucpd-sys-userchoice-protection-driver-part-2\/\" target=\"_blank\" rel=\"noreferrer noopener\">UCPD.sys \u2013 UserChoice Protection Driver Part 2<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/binary.ninja\/2025\/03\/25\/default-browser-upcd.html\" target=\"_blank\" rel=\"noreferrer noopener\">Binary Ninja Blog: Inside Windows&#8216; Default Browser Protection<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/xusheng6\/ucpd_analysis\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/xusheng6\/ucpd_analysis<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sp\u00e4testens mit den M\u00e4rz 2024 Updates d\u00fcrfte Microsoft bei ziemlich allen Windows 10 und Windows 11 Editionen einen &#8222;UserChoice Protection Driver&#8220; (Kurz-Name &#8222;UCPD&#8220;) auf die Systeme aufgebracht haben. Es handelt sich hierbei um einen Filter-Treiber, der den schreibenden Zugriff auf diverse &#8222;UserChoice&#8220; Registry-Keys unterbinden soll. Was &#8222;UserChoice&#8220; bedeutet habe ich vor vielen Jahren (im Jahr 2017) in diesem Blog-Post erl\u00e4utert&#8230;. <\/p>\n","protected":false},"author":1,"featured_media":2135,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[3,4,23],"tags":[591,590,593,594,589,588,587,592,189],"class_list":["post-2130","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-it","category-security","category-windows","tag-pdf","tag-driver","tag-http","tag-https","tag-protection","tag-setuserfta","tag-ucpd","tag-urlassociations","tag-userchoice"],"_links":{"self":[{"href":"https:\/\/hitco.at\/blog\/wp-json\/wp\/v2\/posts\/2130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hitco.at\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hitco.at\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hitco.at\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hitco.at\/blog\/wp-json\/wp\/v2\/comments?post=2130"}],"version-history":[{"count":53,"href":"https:\/\/hitco.at\/blog\/wp-json\/wp\/v2\/posts\/2130\/revisions"}],"predecessor-version":[{"id":2542,"href":"https:\/\/hitco.at\/blog\/wp-json\/wp\/v2\/posts\/2130\/revisions\/2542"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hitco.at\/blog\/wp-json\/wp\/v2\/media\/2135"}],"wp:attachment":[{"href":"https:\/\/hitco.at\/blog\/wp-json\/wp\/v2\/media?parent=2130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hitco.at\/blog\/wp-json\/wp\/v2\/categories?post=2130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hitco.at\/blog\/wp-json\/wp\/v2\/tags?post=2130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}