
Que es ese Mensaje al inicio de PuntoBat 3.0?
En el soporte en terreno, los primeros minutos frente a un equipo problemático son decisivos. Antes de empezar a ejecutar comandos a ciegas, todo técnico necesita responder rápidamente tres preguntas básicas: ¿Hay conectividad real? ¿El disco del sistema está al borde del colapso? ¿Los servicios de administración corporativa están respondiendo?
Revisar esto manualmente en cada ticket consume un tiempo que no tenemos. Por eso, en la arquitectura de PuntoBat V3.0, decidí que la herramienta hiciera este triaje por nosotros de forma automática y en segundo plano, justo en el momento en que se abre la aplicación.
En este artículo, vamos a desarmar el código detrás del escaneo inicial y ver cómo interactúa con el sistema operativo.
1. El Arranque Silencioso (Asincronismo puro)
El principal desafío de ejecutar diagnósticos al inicio es no “congelar” la interfaz gráfica. El técnico necesita ver que el programa ya abrió, mientras los motores trabajan por detrás. Para lograr esto en C#, utilizamos programación asíncrona (async/await) en el evento de carga principal:
private async void Form1_Load(object sender, EventArgs e)
{
try
{
// 1. Revisamos silenciosamente si hay una versión nueva
UpdateManager actualizador = new UpdateManager();
await actualizador.BuscarActualizaciones();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("Error buscando actualizaciones: " + ex.Message);
}
// 2. Le damos 1 segundo de respiro a la interfaz para que cargue visualmente
await Task.Delay(1000);
// 3. Lanzamos el escaneo del equipo en segundo plano (100% local)
await Task.Run(() => EjecutarChequeoInicial());
}
Ese Task.Run() es la magia. Permite que la ventana principal de PuntoBat con todos sus botones se despliegue inmediatamente, mientras un hilo secundario se encarga del trabajo pesado.
2. Los Tres Pilares del Diagnóstico
El método EjecutarChequeoInicial() es el verdadero cerebro de esta fase. Evalúa tres componentes críticos y va armando una “lista de tareas sugeridas” solo si encuentra anomalías.
// --- CHEQUEO 1: CONECTIVIDAD DE RED ---
bool internet = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
if (!internet) {
tareasSugeridas.Add("Restablecer adaptadores de red (ipconfig /flushdns)");
}
// --- CHEQUEO 2: SERVICIO SCCM (CcmExec) INTELIGENTE ---
if (System.IO.Directory.Exists(@"C:\Windows\CCM")) {
System.Diagnostics.Process[] sccmProcess = System.Diagnostics.Process.GetProcessesByName("CcmExec");
if (sccmProcess.Length == 0) {
tareasSugeridas.Add("Forzar inicio del servicio SCCM (CcmExec)");
}
}
// --- CHEQUEO 3: ESPACIO EN DISCO C ---
System.IO.DriveInfo discoC = new System.IO.DriveInfo("C");
if (discoC.IsReady) {
double libreGB = discoC.AvailableFreeSpace / 1024.0 / 1024.0 / 1024.0;
if (libreGB < 10) {
tareasSugeridas.Add("Limpiar archivos temporales y caché del sistema");
}
}
¿Por qué estos tres chequeos?
- Red: Muchas veces Windows muestra el ícono de conexión, pero la capa DNS está corrupta.
- SCCM (
CcmExec): En entornos corporativos, si el cliente de Microsoft Endpoint Configuration Manager está caído, el equipo deja de recibir parches de seguridad y despliegues. PuntoBat detecta si la carpeta de instalación existe y valida si el proceso está corriendo realmente en memoria. - Disco: Un equipo con menos de 10 GB en la unidad C: va a presentar lentitud generalizada e impedirá la descarga de actualizaciones de Windows Update.
3. La Interfaz Dinámica: Cero Fricción
Si la lista de tareasSugeridas está vacía, el sistema arroja un mensaje limpio confirmando que el equipo está en óptimas condiciones, permitiendo al técnico ir directamente a los paneles de mantenimiento avanzado.
Sin embargo, si se detectan fallas, PuntoBat no ejecuta las reparaciones a la fuerza. Genera dinámicamente un formulario (MostrarVentanaChecklist) con casillas de verificación que ya vienen marcadas por defecto. Así, el técnico mantiene el control total, pero se ahorra los clics.
4. Ejecución y Persistencia Corporativa
Una vez que el técnico aprueba las reparaciones, el motor ejecuta los comandos nativos de Windows correspondientes.
if (orden.Contains("servicio sccm"))
{
EjecutarCMD("net start CcmExec");
RegistrarLog("SISTEMA_NATIVO", orden, "net start CcmExec");
}
Como PuntoBat V3.0 está diseñado como una herramienta de instalación formal, cada una de estas acciones queda grabada permanentemente a través de la función RegistrarLog(). Incluso si estas reparaciones automáticas se ejecutan en segundos, el historial queda almacenado en el disco local para cualquier auditoría futura, asegurando la trazabilidad del soporte.
Automatizar el triaje inicial no solo ahorra un par de minutos por equipo, sino que estandariza la calidad del soporte técnico en terreno, asegurando que los problemas más básicos pero destructivos (como un servicio SCCM caído o un disco lleno) nunca pasen desapercibidos.
Si quieres auditar el código completo o implementar la herramienta en tu infraestructura, puedes revisar el repositorio oficial en GitHub.

No responses yet