Skip to content

fenreitsu/FEN-AuditSW

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FEN-AuditSW - Software Auditor

Herramienta de auditoría de software para Windows con interfaz gráfica WPF desarrollada en PowerShell.

Características

  • 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 / ⚠️ No verificado)
  • 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)
  • Historial de actualizaciones de Windows (Hotfixes - últimos 90 días)
  • Clasificación automática de software en Apps / Plataformas y Drivers
  • Pestaña "Platforms & Drivers" con runtimes, frameworks y componentes
  • Filtros de búsqueda por nombre en todas las pestañas

Estructura del Proyecto

FEN-AuditSW/
├── FEN-AuditSW.ps1          # Punto de entrada principal
├── README.md                 # Documentación
├── 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
        │   └── Hotfixes.ps1
        ├── core/                 # Funciones centrales
        │   ├── Logging.ps1
        │   ├── Version-Check.ps1
        │   └── Get-InstalledApps.ps1
        └── export/               # Exportación de datos
            └── Export.ps1

Interfaz de Usuario

Ventana nativa Windows 11

  • 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

Barra de Título Personalizada

  • 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

Barra de Estado Dinámica

  • Muestra contador de elementos según la pestaña activa:
    • "Software Instalado" → "Seleccionados: N de M"
    • "Platforms & Drivers" → "N elementos"
    • "Software del Sistema" → "N elementos"
  • Se actualiza automáticamente al cambiar de pestaña, filtrar o buscar

Botones de Acción

  • Refrescar: Recarga ambas pestañas simultáneamente
  • Exportar: Menú desplegable con opciones:
    • "Export SW sistema" → exporta toda la tabla del sistema a CSV
    • "Export SW instalado" → exporta solo el software seleccionado (checkbox) a CSV
    • Cada opción abre un diálogo "Guardar como" nativo de Windows

Tablas de Datos

  • Software Instalado (Tab 0): Columnas: checkbox de selección, Nombre, Editor, Versión (icono + texto), Fecha Instalación, F. Ult. Actualización, Peso, PATH, F. Ult. Uso, Licencia, Vencimiento
  • Platforms & Drivers (Tab 1): Columnas: Nombre, Editor, Versión, Fecha Instalación, Peso, PATH
  • Software del Sistema (Tab 2): Columnas: Nombre, Versión, Origen, Proveedor, Fecha Instalación, Peso, PATH
  • Solo lectura: No se pueden editar celdas
  • Copiar celda: Clic derecho → "Copiar" copia el texto de la celda
  • Selección múltiple: Checkbox en cada fila + checkbox "Seleccionar todo" en el header (solo afecta items visibles según filtro)
  • Columna Versión: Template con icono coloreado (✅ verde, ❌ rojo, ⚠️ amarillo) + texto de versión
  • Filtros por nombre, versión, publicador (caja de búsqueda con placeholder "Buscar por nombre...")
  • Filtros por estado: Todos, Actualizados, Desactualizados, No verificados (solo visibles en pestaña Instalado)
  • Reordenamiento de columnas: Bloqueado para la columna 0 (checkbox) — siempre permanece primera

Historial de Actualizaciones (Hotfixes)

  • Sección expandible debajo de las tablas principales con DataGrid de hotfixes
  • Columnas: Hotfix ID, Fecha Instalación, Descripción, Caption, Instalado por
  • Muestra las actualizaciones de Windows de los últimos 90 días
  • Obtenido vía Get-HotFix con filtro por fecha

Temas Claro/Oscuro

Implementación

  • Temas unificados en Theme.xaml con valores default (tema claro suave)
  • Cambio de tema en runtime vía Set-WPFWindowTheme() que reemplaza los SolidColorBrush en el ResourceDictionary
  • Sigue el tema del sistema al iniciar (registro AppsUseLightTheme)

Tema Claro (suavizado)

  • Fondo: #F3F3F3 (off-white, menos agresivo que blanco puro)
  • Superficie: #E8E8E8
  • Texto: #000000
  • Acento: #0099CC
  • Borde: #D0D0D0

Tema Oscuro

  • Fondo: #1E1E1E
  • Superficie: #2D2D2D
  • Texto: #FFFFFF
  • Acento: #50E6FF
  • Borde: #404040

Requisitos

  • Windows 10/11
  • PowerShell 5.1 o superior
  • winget (para verificación de versiones)
  • .NET Framework (para interfaz WPF)

Uso

Ejecutar como administrador recomendado:

.\FEN-AuditSW.ps1

Módulos Principales

Módulo Descripción
Audit-System.ps1 Audita Windows Features, Store Apps y Drivers con Publisher, Source, InstallDate, Size y PATH
Get-InstalledApps.ps1 Obtiene apps instaladas del registro, clasifica en App/Component, busca PATH y fecha de último uso
Version-Check.ps1 Verifica versiones usando winget con caché configurable (30 min)
Hotfixes.ps1 Obtiene actualizaciones de Windows (hotfixes) de los últimos 90 días
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

Notas Técnicas

Esquinas redondeadas

  • Se usa DwmSetWindowAttribute (DWMWA_WINDOW_CORNER_PREFERENCE) para esquinas nativas
  • WindowChrome elimina los bordes invisibles desiguales del sistema
  • El CornerRadius del Border WPF se sincroniza con DWM (8px normal, 0px maximizado)

Iconos

  • Toda la interfaz usa glyphs de Segoe MDL2 Assets (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

Optimizaciones de Código

  • 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-Debug descriptivo
  • Get-ItemProperty * reemplazado por Get-ChildItem + por-subkey para evitar pérdida de datos
  • Filtro de PWAs (Chrome/Edge web apps) en el escaneo de registro
  • Rutas C:\Program Files reemplazadas por variables de entorno

Detección de PATH (4 métodos adicionales)

Los métodos de PATH se ejecutan secuencialmente SOLO para items sin ruta (sin overhead para el resto):

  1. Start Menu shortcuts — Escanea *.lnk en Inicio y resuelve el target vía WScript.Shell
  2. MSI Products — Lee HKLM:\...\Installer\Products mapeando ProductNameInstallLocation
  3. Fuzzy directory — Coincidencia parcial por tokens del nombre en el índice de directorios
  4. .exe search — Busca ejecutables coincidentes en subdirectorios de Program Files (1 nivel)

Corrección de UserAssist (Fechas de último uso)

  • Agregado decodificador ROT-13 para nombres cifrados en UserAssist
  • Eliminado fallback de Jump Lists que asignaba la misma fecha a todo el software
  • Matching ahora compara contra nombres decodificados, no cifrados

Maximizado

  • 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)

About

FEN-AuditSW . Herramienta de auditoría de software para Windows con interfaz gráfica WPF desarrollada en PowerShell.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors