Skip to content

fenreitsu/FEN-AuditSW

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

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

Estructura del Proyecto

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

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

Botones de Acción

  • 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

Tablas de Datos

  • 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

Temas Claro/Oscuro

Implementación

  • Tema unificado 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

Glifos de barra de título:

  • Tema: ☾ (EC46) en oscuro / ☀ (E793) en claro
  • Minimizar:  (E921)
  • Maximizar:  (E923)
  • Restaurar:  (E944)
  • Cerrar:  (E8BB) con hover rojo

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

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

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

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