Herramienta de auditoría de software para Windows con interfaz gráfica WPF desarrollada en PowerShell.
- Escaneo de software instalado vía registro de Windows
- Auditoría de componentes del sistema (Windows Features, Store Apps, Drivers)
- Verificación de versiones usando winget con caché configurable
- Control de actualizaciones (✅ Actualizado / ❌ Desactualizado)
- Interfaz gráfica WPF nativa de Windows 11 (esquinas redondeadas, sombra DWM)
- Tema claro/oscuro automático (sigue el tema del sistema) y manual
- Glifos Segoe Fluent Icons en toda la interfaz (sin emojis)
- Exportación de reportes a CSV compatible con Excel
- Copia de celdas individuales con clic derecho
- Filtros por estado: Todos, Actualizados, Desactualizados, No verificados
- Registro de auditoría (audit.log)
FEN-AuditSW/
├── FEN-AuditSW.ps1 # Punto de entrada principal
├── README.md # Documentación
├── versions.json # Versiones de referencia de software
├── audit.log # Registro de auditoría
├── assets/
│ ├── images/ # Recursos visuales (íconos, logos)
│ └── styles/
│ ├── Theme.xaml # Tema unificado claro/oscuro
│ └── SharedStyles.xaml # Estilos compartidos (botones de título)
├── ui/
│ ├── MainWindow.xaml # Definición de interfaz WPF
│ └── UI.ps1 # Lógica de la interfaz gráfica
└── modules/
├── audit/ # Módulos de auditoría
│ ├── Audit-System.ps1
│ ├── Audit-Installed.ps1
│ └── Hotfixes.ps1
├── core/ # Funciones centrales
│ ├── Logging.ps1
│ └── Version-Check.ps1
└── export/ # Exportación de datos
└── Export.ps1
WindowStyle="None"+WindowChrome+ DWM para bordes redondeados y sombra nativa- Ventana sin bordes del sistema operativo (GlassFrameThickness=0)
- Esquinas redondeadas de 8px al restaurar, cuadradas al maximizar
- El maximizado respeta el área de trabajo (WorkArea), sin ocultar la barra de tareas
- Minimizar, maximizar/restaurar y cerrar con glifos Segoe Fluent Icons
- Logo, nombre de la aplicación y versión
- Botón de tema (luna/sol) con glifo dinámico
- Minimizar (), Maximizar/Restaurar (/), Cerrar ()
- Arrastrable mediante
DragMove()en toda la barra
- Muestra información según la pestaña activa:
- "Software del Sistema" + contador de elementos
- "Software Instalado" + contador de elementos
- Se actualiza automáticamente al cambiar de pestaña
- Actualizar: Actualiza ambas pestañas simultáneamente
- Exportar: Menú desplegable con opciones para exportar cada tabla
- Cada opción abre un diálogo "Guardar como" nativo de Windows
- Solo lectura: No se pueden editar celdas
- Copiar celda: Clic derecho → "Copiar" copia el texto de la celda
- Selección: Fondo coloreado (SelectedBrush) en ambas celdas y filas
- Filtros por nombre, versión, publicador (caja de búsqueda)
- Filtros por estado: Todos, Actualizados, Desactualizados, No verificados
- Las tablas usan glifos Segoe Fluent para los filtros de estado
- Tema unificado en
Theme.xamlcon valores default (tema claro suave) - Cambio de tema en runtime vía
Set-WPFWindowTheme()que reemplaza losSolidColorBrushen el ResourceDictionary - Sigue el tema del sistema al iniciar (registro
AppsUseLightTheme)
- Fondo: #F3F3F3 (off-white, menos agresivo que blanco puro)
- Superficie: #E8E8E8
- Texto: #000000
- Acento: #0099CC
- Borde: #D0D0D0
- Fondo: #1E1E1E
- Superficie: #2D2D2D
- Texto: #FFFFFF
- Acento: #50E6FF
- Borde: #404040
- Tema: ☾ (EC46) en oscuro / ☀ (E793) en claro
- Minimizar: (E921)
- Maximizar: (E923)
- Restaurar: (E944)
- Cerrar: (E8BB) con hover rojo
- Windows 10/11
- PowerShell 5.1 o superior
- winget (para verificación de versiones)
- .NET Framework (para interfaz WPF)
Ejecutar como administrador recomendado:
.\FEN-AuditSW.ps1| Módulo | Descripción |
|---|---|
| Audit-System.ps1 | Audita Windows Features, Store Apps y Drivers |
| Audit-Installed.ps1 | Escanea software instalado vía registro (3 métodos de detección de fecha+path) |
| Version-Check.ps1 | Verifica versiones usando winget con caché de 24hs |
| Logging.ps1 | Sistema de registro de eventos con niveles Info/Warning/Error/Debug |
| Export.ps1 | Exportación a CSV con BOM UTF-8 para compatibilidad Excel |
| UI.ps1 | Interfaz gráfica WPF con filtros, temas, maximizado y copia de celdas |
- Se usa
DwmSetWindowAttribute(DWMWA_WINDOW_CORNER_PREFERENCE) para esquinas nativas WindowChromeelimina los bordes invisibles desiguales del sistema- El CornerRadius del Border WPF se sincroniza con DWM (8px normal, 0px maximizado)
- Toda la interfaz usa glifos de Segoe Fluent Icons (U+E000–U+EFFF)
- Los emojis se usan solo dentro de las celdas del DataGrid (✅ ❌
⚠️ en strings) - Los títulos de pestañas, botones y filtros usan glyphs equivalentes
- Funciones muertas eliminadas:
Get-SoftwareSize,Get-WindowsInfo,Format-HotfixTable,Initialize-Log,Export-ToCSV,Show-SaveDialog - Código duplicado eliminado:
$commonPaths(3→1), copy handlers (2→1), filter predicates (2→1) - Variables muertas eliminadas:
$progressBar,[Encoding]::Default - Catch blocks vacíos reemplazados con
Write-Debugdescriptivo Get-ItemProperty *reemplazado porGet-ChildItem+ por-subkey para evitar pérdida de datos- Filtro de PWAs (Chrome/Edge web apps) en el escaneo de registro
- Rutas
C:\Program Filesreemplazadas por variables de entorno
- El maximizado se maneja manualmente: guarda el rectángulo normal, establece bounds al WorkArea
- Al restaurar se devuelve la posición y tamaño guardados
- Sin WindowChrome ni DWM en maximizado (esquinas cuadradas)