- UCPD es un controlador a nivel de sistema que protege claves del Registro críticas para las apps predeterminadas y la región del dispositivo.
- La protección se basa en una combinación de servicio de driver y tarea programada que reconfigura automáticamente UCPD si detecta cambios.
- Es posible desactivar UCPD de forma temporal para ajustar DeviceRegion o asociaciones, siempre acompañando los cambios de reinicios.
- Reactivar UCPD tras las modificaciones devuelve la capa de seguridad que impide a terceros cambiar silenciosamente las aplicaciones por defecto.

Si usas Windows 10 u 11 y has notado que es casi imposible dejar un navegador, un lector de PDF o incluso la región del dispositivo configurados “a tu manera”, probablemente el culpable sea el UserChoice Protection Driver (UCPD). Este componente, que trabaja a nivel muy bajo en el sistema, se ha colado en prácticamente todas las instalaciones modernas de Windows y, aunque tiene buenas intenciones, puede ser un auténtico dolor de cabeza para administradores, usuarios avanzados y herramientas de personalización.
En las siguientes líneas vas a encontrar una explicación clara de qué es exactamente UCPD, qué protege, por qué Microsoft lo ha introducido, y cómo puedes desactivarlo o volver a activarlo de forma segura tanto para cambiar la región del dispositivo (DeviceRegion) como para permitir que scripts y programas ajusten las aplicaciones predeterminadas. Todo ello con pasos detallados, advertencias de seguridad y ejemplos de comandos en PowerShell y en la línea de comandos clásica.
Qué es UserChoice Protection Driver (UCPD) y qué protege
UCPD es un controlador de filtro del sistema de archivos (un minifilter) introducido por Microsoft en las versiones recientes de Windows 10 y Windows 11, desplegado de forma masiva entre principios y primavera de 2024. Su misión principal es impedir que procesos no autorizados, especialmente herramientas de terceros, modifiquen ciertos valores de registro relacionados con las aplicaciones predeterminadas y con la región del dispositivo.
Este controlador se encarga, entre otras cosas, de bloquear accesos de escritura o eliminación a varios claves UserChoice del Registro. Estas claves determinan, por ejemplo, qué programa abre las URL http y https, qué navegador es el predeterminado, o qué aplicación se encarga de los archivos PDF. Cuando un proceso que no cumple los criterios del filtro intenta escribir en esas rutas, el resultado es un «ACCESS DENIED», aunque aparentemente el usuario tenga permisos suficientes.
Internamente, UCPD se carga como un driver de tipo FILE_SYSTEM_DRIVER en el grupo de filtros de actividad (FSFilter Activity Monitor). Puedes verlo con comandos como sc qc ucpd o fltMC filters, donde aparece junto a otros filtros como WdFilter (Defender), bindflt o FileInfo. Al estar en una determinada «altura» (altitude) dentro de la pila de filtros, puede interceptar y decidir si deja pasar o no las operaciones sobre el sistema de archivos y el Registro.
Además, UCPD no solo protege las asociaciones de archivo y protocolo. En versiones recientes, también se ha extendido a otros escenarios sensibles, como el valor DeviceRegion, que determina en qué país está localizado el dispositivo, algo que se cruza con funciones como la posibilidad de desinstalar Microsoft Edge en determinados países de la UE.
Cómo decide UCPD qué procesos bloquear
El funcionamiento interno de UCPD es más sofisticado de lo que puede parecer. En lugar de bloquear indiscriminadamente, el driver evalúa si el proceso que intenta escribir en las claves protegidas es un binario firmado por Microsoft y, además, si está o no incluido en una lista de denegación (deny list). Solo los procesos que pasan ambos filtros pueden modificar esas partes del Registro.
Por un lado, UCPD comprueba la firma digital del ejecutable y se asegura de que pertenezca a Microsoft y esté reconocido como parte oficial del sistema. Por otro, mantiene una lista interna de procesos vetados que, aunque sean de Microsoft, no pueden usarse como «herramienta» para saltarse la protección. Es decir, no basta con que un binario sea oficial: si está en la deny list, se bloquea igual.
Entre los procesos de Windows típicamente incluidos en esta lista de denegación se encuentran ejecutables muy usados para administrar el sistema o automatizar cambios, como cmd.exe, powershell.exe, reg.exe, regedit.exe, rundll32.exe, dllhost.exe, wscript.exe o cscript.exe, entre otros. La idea es evitar que herramientas de terceros se «apoyen» en estos binarios para escribir en las claves UserChoice o en DeviceRegion.
En la práctica, esto significa que incluso programas legítimos que antes funcionaban sin problemas —como SetUserFTA, Sophia Script, soluciones de VMWare o tools de despliegue corporativo— pueden encontrarse con errores de acceso denegado al intentar fijar navegadores, lectores de PDF u otras aplicaciones predeterminadas.
Microsoft ha ido ajustando el comportamiento de UCPD con el tiempo, ampliando la lista de procesos bloqueados y cerrando algunos atajos que la comunidad había descubierto para rodear las restricciones. Las versiones recientes del driver (ucpd.sys) han ido endureciendo cada vez más la política, obligando a buscar soluciones más sofisticadas o procedimientos oficiales.
Claves de registro bajo protección de UCPD
Una de las preguntas clave para administradores y usuarios avanzados es qué rutas exactas del Registro quedan bajo la «muralla» de UCPD. A partir de análisis prácticos, desensamblado del driver y pruebas con herramientas como Process Monitor, se ha podido determinar que el controlador bloquea operaciones de borrado y escritura en varias claves críticas.
Entre las rutas más relevantes protegidas por UCPD están las asociadas a las URL y a los PDF en el perfil de usuario, normalmente bajo HKCU\Software\Microsoft\Windows\Shell\Associations y HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts. Por ejemplo, claves como:
Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoiceSoftware\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoiceLatestSoftware\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoicePreviousSoftware\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoiceSoftware\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoiceLatestSoftware\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoicePreviousSoftware\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoiceSoftware\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoiceLatestSoftware\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoicePrevious
Además, se ha comprobado que también protege la clave de región del dispositivo en HKLM, concretamente:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\DeviceRegion\DeviceRegion
Este último punto es muy relevante, porque determinadas características de Windows —como la posibilidad de desinstalar Microsoft Edge— dependen de si el valor DeviceRegion corresponde a un país de la Unión Europea. Por ejemplo, un código de región que indique Austria o Alemania permitirá la desinstalación, mientras que un valor que represente Estados Unidos la bloqueará. Y ese mismo valor está ahora protegido por UCPD frente a cambios automáticos.
Componentes de UCPD: servicio y tarea programada
Para entender cómo activar o desactivar UCPD sin que vuelva a encenderse solo, hay que conocer sus dos piezas principales: el servicio/driver UCPD y la tarea programada «UCPD velocity», alojada en el Programador de tareas de Windows. Ambos trabajan juntos para garantizar que la protección esté siempre activa.
Por un lado, existe el servicio de sistema llamado simplemente «UCPD», que carga el driver system32\drivers\UCPD.sys. En muchas instalaciones recientes, su tipo de inicio está configurado como SYSTEM_START (1), lo que implica que el controlador se carga muy pronto durante el arranque, antes de que el usuario inicie sesión.
Por otro, hay una tarea programada bajo la ruta \Microsoft\Windows\AppxDeploymentClient\UCPD velocity. Esta tarea se ejecuta normalmente tras el inicio de sesión del usuario y después de un cierto tiempo de inactividad, y llama a UCPDMgr.exe, una utilidad de Microsoft encargada de revisar y “reparar” el estado del servicio UCPD si detecta cambios no deseados.
El comportamiento de esta tarea es bastante claro: comprueba si la configuración del servicio coincide con lo esperado (inicio como SYSTEM_START, valor de la característica interna «FeatureV2» establecido en 2, servicio en ejecución, etc.) y, si no, restaura la configuración recomendada. Eso significa que, aunque cambies el tipo de inicio del servicio, al siguiente inicio de sesión la tarea podría dejarlo otra vez como estaba, salvo que también la deshabilites.
Importante: esta tarea del Programador de tareas solo es visible y editable con permisos de administrador. Un usuario estándar no la verá listada, lo que puede dar la impresión de que el sistema se «autocorrige» sin explicación alguna.
Comprobar si UCPD está activo en tu sistema
Antes de ponerte a desactivar nada, conviene saber si UCPD está realmente funcionando en tu equipo. En la mayoría de máquinas modernas con Windows 10 u 11 actualizadas, la respuesta será que sí, pero merece la pena confirmarlo con un par de comandos sencillos.
Desde Windows Terminal o PowerShell, puedes ejecutar:
Get-Service UCPD
El resultado te mostrará si el servicio está en estado Running (en ejecución) o Stopped (detenido), así como el tipo de inicio configurado. Si prefieres la clásica línea de comandos (CMD), puedes utilizar:
sc query ucpd
En este caso, verás información detallada sobre el servicio: tipo, estado, código de salida y si está configurado para arrancar con el sistema. Si aparece como STATE : 4 RUNNING y START_TYPE : 1 SYSTEM_START, significa que el driver está completamente operativo y se carga en cada arranque.
En entornos corporativos donde se usan herramientas de migración o scripts masivos, los síntomas de UCPD activo pueden aparecer en los logs de errores como excepciones de tipo System.UnauthorizedAccessException, indicando que se ha intentado realizar una operación no autorizada sobre claves como HKEY_USERS\<SID>\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\<protocolo>\UserChoice.
Desactivar temporalmente UCPD para modificar la región o las apps predeterminadas
Hay casos concretos en los que puede ser necesario desactivar UCPD de forma temporal: por ejemplo, para ajustar correctamente la región del dispositivo cuando Windows la ha fijado mal durante la instalación, para permitir que un script corporativo configure las aplicaciones por defecto, o para solucionar problemas de migración de perfiles.
La clave está en hacerlo con cuidado: deshabilitar el servicio UCPD y la tarea «UCPD velocity», realizar los cambios necesarios (por ejemplo, modificar DeviceRegion o borrar/recrear claves de asociaciones), y después reactivar la protección para no dejar el sistema expuesto a cambios no deseados por parte de software de terceros.
Un enfoque muy utilizado consiste en modificar directamente los valores del Registro asociados al servicio UCPD desde PowerShell con privilegios elevados. Por ejemplo, para impedir que el driver se cargue, se cambia el valor Start del servicio a 4 (Disabled), y se desactiva la tarea del Programador de tareas que volvería a reconfigurarlo.
En escenarios de migración gestionados, incluso se encapsulan estos pasos en scripts de pre y post migración (por ejemplo, UCPDStartup.ps1 y UCPDComplete.ps1) que se lanzan antes y después del proceso, asegurando que el agente de migración pueda tocar las claves necesarias y luego dejarlo todo tal y como estaba.
Es importante tener muy presente que el controlador de UCPD se carga en memoria durante el arranque. Por eso, tras cambiar el tipo de inicio del servicio o desactivar la tarea de reactivación automática, será imprescindible reiniciar el sistema para que los cambios surtan efecto de verdad y el driver deje de interceptar las operaciones.
Pasos detallados para desactivar UCPD desde PowerShell
Si quieres ir al grano y desactivar el UserChoice Protection Driver, tanto para ajustar la región del dispositivo como para permitir que herramientas de terceros modifiquen las asociaciones predeterminadas, puedes seguir una secuencia de comandos en PowerShell. Todo debe ejecutarse en una consola con privilegios de administrador.
En primer lugar, tienes que impedir que el servicio se cargue con el sistema. Para ello, cambia el valor Start del servicio UCPD a 4 (Disabled) usando:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\UCPD" -Name "Start" -Value 4
Con este ajuste, el driver no se iniciará en el próximo arranque. Sin embargo, si no haces nada más, la tarea programada «UCPD velocity» podría volver a activar y reconfigurar el servicio en el siguiente inicio de sesión, así que el siguiente paso es deshabilitar dicha tarea:
Disable-ScheduledTask -TaskName "\Microsoft\Windows\AppxDeploymentClient\UCPD velocity" -ErrorAction SilentlyContinue
Este comando deja inactiva la tarea que se encarga de vigilar el estado del servicio y forzar su arranque/configuración si detecta cambios no deseados. El parámetro -ErrorAction SilentlyContinue simplemente oculta mensajes si la tarea no existe o ya está deshabilitada.
Una vez ejecutados estos dos comandos, es imprescindible reiniciar el equipo. Este reinicio es obligatorio porque el driver UCPD ya está cargado en la memoria RAM, y solo apagando y volviendo a arrancar Windows te aseguras de que el sistema arranque sin esa protección activa.
Después del reinicio, UCPD no estará interceptando accesos, por lo que podrás modificar las claves protegidas (DeviceRegion, UserChoice, etc.) usando las herramientas habituales (PowerShell, regedit, scripts corporativos, etc.), siempre con la precaución de saber exactamente qué estás tocando.
Cambiar la región del dispositivo (DeviceRegion) sin que UCPD bloquee
Uno de los casos más llamativos donde UCPD interfiere es en la región del dispositivo. En Ajustes > Hora e idioma > Idioma y región, en la parte inferior de la página, aparece la «Región de configuración del dispositivo». Este valor se fija normalmente durante la instalación de Windows y, en algunos equipos, puede aparecer un país erróneo o incluso «Desconocido».
Cuando esa región está mal, pueden fallar funciones como la integración del móvil en el menú Inicio, ciertas características regionales o incluso el comportamiento del propio navegador Edge respecto a su desinstalación en territorios de la UE. El problema es que UCPD protege precisamente el valor de Registro donde se almacena esa configuración, impidiendo cambios automatizados.
Tras desactivar temporalmente UCPD (servicio y tarea, con reinicio de por medio), puedes abrir de nuevo PowerShell como administrador y escribir directamente el código de país correcto en la clave DeviceRegion. El valor está en formato DWORD y representa un identificador numérico del país.
El comando general para establecer la región del dispositivo sería:
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\DeviceRegion" -Name "DeviceRegion" -Value <codigoPais> -Type DWord
Solo tienes que sustituir <codigoPais> por el número correspondiente a tu país. Algunos ejemplos de códigos conocidos son:
- Australia: 12
- Brasil: 32
- Canadá: 39
- Francia: 84
- Alemania: 94
- India: 113
- Italia: 118
- México: 166
- Filipinas: 214
- España: 217
- Reino Unido: 242
- Estados Unidos: 244
Por ejemplo, para fijar la región en Estados Unidos, el comando completo sería:
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\DeviceRegion" -Name "DeviceRegion" -Value 244 -Type DWord
No hace falta crear ni eliminar la clave ni la subcarpeta: Windows protege la estructura, pero te permite sobrescribir el valor cuando UCPD no está activo. Una vez hecho el cambio, al volver a la configuración regional verás que el país se ha actualizado sin problemas.
Reactivar UCPD después de hacer cambios
Una vez que hayas terminado de ajustar la región del dispositivo o de modificar las asociaciones de archivos/protocolos mediante scripts o herramientas específicas, lo recomendable es volver a activar UCPD. Dejarlo deshabilitado de forma permanente abre la puerta a que aplicaciones menos fiables cambien silenciosamente tu navegador predeterminado, tu lector de PDF u otros valores clave sin que te des cuenta.
Para restaurar el comportamiento estándar desde PowerShell con permisos de administrador, puedes volver a configurar el servicio UCPD con un tipo de inicio automático (o de sistema) y reactivar la tarea programada. Por ejemplo, si quieres que el servicio se configure con inicio manual o automático mediante las API de servicios de Windows, puedes usar:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\UCPD" -Name "Start" -Value 3(para que el servicio tenga inicio manual/automático según corresponda)
En paralelo, conviene reactivar la tarea «UCPD velocity» para que el propio sistema recupere su lógica de autocorrección y vigilancia:
Enable-ScheduledTask -TaskName "\Microsoft\Windows\AppxDeploymentClient\UCPD velocity" -ErrorAction SilentlyContinue
Tras ejecutar estos comandos, lo más prudente es realizar un nuevo reinicio del equipo para que el controlador vuelva a cargarse con la configuración adecuada. A partir de ahí, la protección volverá a actuar sobre las claves UserChoice y DeviceRegion, reduciendo el riesgo de que terceras aplicaciones intenten tomar el control sin preguntar.
En contextos donde prefieras trabajar con la consola clásica, tienes alternativas equivalentes con sc.exe y schtasks.exe, por ejemplo:
sc config UCPD start=auto(para habilitarlo)schtasks /change /Enable /TN "\Microsoft\Windows\AppxDeploymentClient\UCPD velocity"
Del mismo modo, si quisieras volver a deshabilitarlo desde CMD, podrías tirar de:
sc config UCPD start=disabledschtasks /change /Disable /TN "\Microsoft\Windows\AppxDeploymentClient\UCPD velocity"
Escenarios típicos de uso: despliegues, compatibilidad y solución de problemas
Aunque para un usuario doméstico UCPD puede pasar totalmente desapercibido, en entornos profesionales y para usuarios avanzados genera escenarios bastante concretos en los que hay que saber cómo manejarlo. Los más habituales se dan en despliegues masivos de equipos, herramientas de personalización de imagen y migraciones de perfiles.
En un despliegue automatizado, administradores de sistemas suelen necesitar scripts o utilidades (como NTLite, ProfileUnity, PowerShell DSC, etc.) para preconfigurar las aplicaciones predeterminadas de los usuarios: navegador, gestor de correo, visor de PDF… Si UCPD está activo, estos scripts pueden fallar con errores de acceso denegado al intentar establecer las asociaciones por defecto mediante las claves UserChoice.
Algo parecido ocurre con algunas aplicaciones legítimas que gestionan asociaciones de archivo, que históricamente escribían directamente en el Registro del usuario. La aparición de UCPD ha forzado a muchos desarrolladores a actualizar sus herramientas para adaptarse a los nuevos requisitos o buscar vías autorizadas por Microsoft.
Otro caso frecuente es el de las migraciones de estaciones de trabajo, donde se transfieren perfiles, configuraciones y asociaciones entre equipos. Algunas soluciones han tenido que introducir versiones especiales de sus agentes que, durante la migración, deshabilitan UCPD al arrancar (pre-script) y lo vuelven a habilitar al terminar (post-script), como se hace con paquetes tipo UCPDStartup.ps1 y UCPDComplete.ps1.
También se han documentado escenarios en los que UCPD mal gestionado provocaba cuelgues o comportamientos extraños del Explorador de Windows (explorer.exe), como cierres inesperados o parpadeo de los iconos del escritorio. En esos casos, una secuencia de solución típica pasa por deshabilitar temporalmente UCPD, reiniciar, limpiar o eliminar ciertas claves de asociaciones en HKEY_USERS (http, https, pdf, FileExts), y luego reactivar el driver y reiniciar de nuevo.
Seguridad, comodidad y el trasfondo normativo del UCPD
Detrás de todo este sistema de protección hay una tensión constante entre seguridad y comodidad. Desde el punto de vista de Microsoft, la idea de impedir que terceros cambien sin permiso las aplicaciones predeterminadas es razonable: durante años se han visto programas que se autoasignaban como navegador o lector de PDF por defecto sin pedir permiso o escondiendo la opción entre casillas poco claras.
UCPD nace precisamente para impedir ese tipo de prácticas, garantizando que solo el propio usuario, a través de los cuadros de diálogo y asistentes del sistema, tenga la última palabra sobre qué aplicación se comporta como predeterminada. Sin embargo, el enfoque elegido también ha puesto contra las cuerdas a herramientas legítimas que los administradores usan para ofrecer una experiencia coherente a cientos o miles de usuarios.
En el ámbito europeo se ha especulado con que la creación de este controlador podría estar relacionada con requisitos regulatorios, en particular con la Directiva sobre Prácticas Comerciales Desleales (Unfair Commercial Practices Directive), que curiosamente comparte siglas UCPD. La idea sería asegurar que Windows no facilita que otro software «robe» silenciosamente el puesto a las aplicaciones elegidas por el usuario, especialmente en temas sensibles como los navegadores web.
A día de hoy, Microsoft ha ido reforzando el driver con nuevas versiones y parches que cierran vías de escape que algunos fabricantes habían encontrado, como el uso de binarios renombrados pero firmados por Microsoft para eludir la deny list. Las soluciones que funcionaban en 2024 pueden dejar de hacerlo con nuevas versiones del driver, obligando a revisar periódicamente las estrategias de configuración.
Con todo esto sobre la mesa, la clave está en encontrar un equilibrio: usar las opciones oficiales de Windows cuando sea posible para definir las apps predeterminadas, y recurrir a la desactivación temporal de UCPD únicamente en escenarios controlados y bien documentados, evitando dejar el sistema permanentemente sin esta capa de protección.
Conociendo cómo funciona UCPD por dentro, qué claves protege, qué procesos vigila y de qué forma se integra en el arranque y en el Programador de tareas, puedes tomar decisiones mucho más informadas sobre cuándo conviene mantenerlo activo y cuándo tiene sentido desactivarlo momentáneamente para tareas concretas como ajustar la región del dispositivo o completar una migración sin errores de acceso denegado.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.