La integración agresiva de Windows Copilot en las versiones más recientes de Windows 11 ha generado opiniones divididas. Mientras que para un usuario de hogar puede ser una curiosidad llamativa, en un entorno corporativo o de soporte en terreno, un asistente de Inteligencia Artificial no gestionado representa un desafío de cumplimiento, privacidad de datos y consumo de recursos innecesarios.
El problema técnico con Copilot es que Microsoft cambia constantemente la forma en que se integra. Lo que ayer era solo un botón en la barra de tareas, hoy es una aplicación AppxPackage incrustada en el sistema. El Botón 4: Desactivar Copilot de PuntoBat V3.0 aborda este problema con una estrategia de “doble frente”, combinando restricciones de directivas con la desinstalación profunda mediante PowerShell.
Aquí desglosamos la ingeniería detrás de esta función.
private async void btnCopilot_Click(object sender, EventArgs e)
{
// AUDITORÍA: Registramos el nuevo método de ataque contra Copilot
RegistrarLog("BOTON_UI", "Clic en Desactivar/Desinstalar Windows Copilot", "AppxPackage Remove + RegEdit");
try
{
// 1. Ocultar del registro (Mantenemos esto por si es una versión antigua de Windows 11)
using (Microsoft.Win32.RegistryKey keyExplorer = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"))
{
if (keyExplorer != null) keyExplorer.SetValue("ShowCopilotButton", 0, Microsoft.Win32.RegistryValueKind.DWord);
}
using (Microsoft.Win32.RegistryKey keyPolicy = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\Policies\Microsoft\Windows\WindowsCopilot"))
{
if (keyPolicy != null) keyPolicy.SetValue("TurnOffWindowsCopilot", 1, Microsoft.Win32.RegistryValueKind.DWord);
}
// 2. EL NUEVO ATAQUE: Desinstalar la App de Copilot silenciosamente con PowerShell
// Usamos await Task.Run para que la interfaz de PuntoBat no se congele mientras PowerShell trabaja
await Task.Run(() =>
{
System.Diagnostics.Process ps = new System.Diagnostics.Process();
ps.StartInfo.FileName = "powershell.exe";
// Busca cualquier paquete que sea de Copilot y lo elimina a la fuerza
ps.StartInfo.Arguments = "-NoProfile -Command \"Get-AppxPackage *Microsoft.Windows.Ai.Copilot* | Remove-AppxPackage -ErrorAction SilentlyContinue\"";
ps.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
ps.StartInfo.CreateNoWindow = true;
ps.StartInfo.UseShellExecute = false;
ps.Start();
ps.WaitForExit();
});
// 3. Aviso de éxito con instrucción manual
MessageBox.Show("Las políticas restrictivas han sido aplicadas y la App interna de Copilot fue removida del sistema.\n\nNOTA: Si el icono de colores sigue visible en tu barra de tareas, simplemente haz clic derecho sobre él y selecciona 'Desanclar de la barra de tareas'. No volverá a molestar.", "PuntoBat V3.0", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
// AUDITORÍA: Guardamos el error si PowerShell falla
RegistrarLog("ERROR_CRITICO", "Fallo al desinstalar App de Copilot", ex.Message);
MessageBox.Show("Error al intentar erradicar Copilot: " + ex.Message, "Error de Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Anatomía de la Erradicación
Para garantizar que Copilot desaparezca sin importar la compilación de Windows 11 que esté corriendo el equipo, el código ejecuta una táctica en dos fases, cuidando siempre el rendimiento de la interfaz.
1. Modificación de Políticas y Registro (La vieja escuela)
La primera parte del bloque try se encarga de las versiones iniciales de Windows 11, donde Copilot era principalmente un acceso directo del Explorador. Utilizando las clases nativas de C#, inyectamos ShowCopilotButton = 0 para apagar el interruptor visual, y más importante aún, forzamos TurnOffWindowsCopilot = 1 en la ruta de Policies. Esto simula el comportamiento de una GPO (Group Policy Object) corporativa, bloqueando el servicio a nivel de directiva.
2. El Ataque PowerShell Asíncrono (La nueva escuela)
Microsoft evolucionó Copilot hacia una aplicación nativa completa. Para erradicarla, instanciamos un proceso oculto de powershell.exe y le pasamos un pipeline letal: Get-AppxPackage *Microsoft.Windows.Ai.Copilot* | Remove-AppxPackage
El uso de comodines (*) garantiza que el comando atrape el paquete sin importar las variaciones en el número de versión. Además, el parámetro -ErrorAction SilentlyContinue asegura que, si la aplicación ya fue removida previamente, el script no arroje errores rojos que interrumpan el flujo.
Toda esta operación de PowerShell es pesada y toma algunos segundos en resolverse. Por ello, la envolvemos en un await Task.Run(). Esto manda el trabajo a un hilo secundario de la CPU, permitiendo que la ventana gráfica de PuntoBat siga 100% responsiva y fluida.
3. UX Honesta y Auditoría Continua
Windows tiene una particularidad: aunque desinstales la aplicación subyacente, a veces deja un ícono “fantasma” anclado en la barra de tareas que ahora no lleva a ninguna parte. En lugar de ejecutar complejos scripts de alteración de la barra de tareas (que suelen corromper el perfil del usuario), la herramienta lanza un MessageBox educando al técnico: la app ya está muerta, solo haz clic derecho y desancla el ícono.
Finalmente, tanto el éxito del “nuevo ataque” como cualquier posible error de permisos quedan rigurosamente registrados mediante RegistrarLog(), asegurando la trazabilidad que todo departamento de TI exige.
Transparencia Total Limpiar el bloatware moderno requiere herramientas actualizadas. Con el código abierto de PuntoBat V3.0, puedes revisar exactamente cómo protegemos la infraestructura corporativa frente a aplicaciones invasivas.
Si quieres auditar el código completo o implementar la herramienta en tu infraestructura, puedes revisar el repositorio oficial en GitHub.

No responses yet