All’avvio di Windows Performance Recorder UI (WRPUI.exe) compare l’errore «UiaRaiseNotificationEvent»? In questa guida trovi diagnosi, cause e rimedi comprovati: compatibilità WPT↔OS, reinstallazione pulita, dipendenze, SFC/DISM e alternative via riga di comando.
Panoramica del problema
Il problema si manifesta all’apertura della GUI di Windows Performance Recorder (parte del Windows Performance Toolkit – WPT incluso nel Windows ADK). Il messaggio tipico è:
WRPUI.exe – Entry Point not Found
The procedure entry pointUiaRaiseNotificationEvent
could not be located in the dynamic link library …\Windows PerformanceRecorderUI.dll
La reinstallazione del WPT, o persino l’installazione su un secondo server, spesso non modifica il risultato se la causa è una incompatibilità tra versione del toolkit e sistema operativo o una dipendenza mancante/danneggiata.
Perché accade: cause più probabili
Probabile causa | Spiegazione sintetica |
---|---|
Versione WPT non compatibile con il sistema operativo | Le build recenti del WPT sono compilate contro funzioni di UI Automation (tra cui UiaRaiseNotificationEvent ) introdotte in Windows 10 1709. Se il sistema è Windows Server 2016/2012 R2 o una release di Windows 10 precedente alla 1709, la funzione non esiste in uiautomationcore.dll . |
DLL danneggiata o mancante | Aggiornamenti o installazioni incomplete possono corrompere WindowsPerformanceRecorderUI.dll o librerie di supporto, impedendo la risoluzione corretta dell’entry point. |
Dipendenze di runtime non presenti | Pacchetti Visual C++ Redistributable o componenti .NET non aggiornati possono impedire il corretto caricamento delle librerie native/managed utilizzate dalla GUI. |
Conflitti di DLL (shadowing nel PATH) | Una copia non di sistema di uiautomationcore.dll o altre DLL nella cartella dell’applicazione o in una directory indicata nel PATH può essere caricata al posto della versione di %SystemRoot%\System32. |
Ambiente con restrizioni | Server Core, AppLocker o “Controlled Folder Access” possono impedire il caricamento di componenti UIA o COM richiesti dalla GUI. In tali contesti è preferibile la riga di comando. |
Cos’è UiaRaiseNotificationEvent
(e perché conta)
UiaRaiseNotificationEvent
è un’API di UI Automation (UIA) usata dalle applicazioni per comunicare notifiche ai client di accessibilità. È stata introdotta in Windows 10 Fall Creators Update (1709). Se il sistema è anteriore oppure è un’edizione server priva di tale funzione, qualunque programma compilato per invocarla fallirà con l’errore “Entry Point not Found”. Di conseguenza, WRPUI.exe può funzionare solo se l’OS fornisce quell’API oppure se si usa una build del WPT più vecchia, compatibile con l’OS in uso.
Matrice di compatibilità WPT ↔ sistema operativo
La regola pratica è: allinea il WPT alla “famiglia” del tuo Windows. Ecco una guida rapida per i casi più ricorrenti:
OS (esempi) | Disponibilità UiaRaiseNotificationEvent | WPT consigliato | Esito atteso per WRPUI.exe |
---|---|---|---|
Windows 10 1607 (14393) / Windows Server 2016 | No | WPT/ADK della stessa era (1607 – build 14393) | OK con WPT 1607; le build più recenti falliscono con l’errore. |
Windows 10 1709 (16299) e successive / Windows 11 | Sì | WPT corrispondente o successivo (in genere compatibile in avanti) | WRPUI si avvia; se non parte, indagare file danneggiati o dipendenze. |
Windows Server 2019 (1809) | Sì | WPT per 1809 o successivo | WRPUI si avvia normalmente salvo conflitti/dipendenze. |
Windows Server 2012 R2 / Windows 8.1 | No | Usare WPT della stessa epoca o preferire wpr.exe CLI | Le build moderne del WPT mostrano l’errore. |
Procedura di troubleshooting consigliata
Segui l’ordine: verifica compatibilità, ripristina le dipendenze, elimina conflitti, quindi valuta i workaround.
Verifica la versione di Windows e la build
- Premi Win+R → digita
winver
→ conferma. - Oppure da PowerShell:
Get-ComputerInfo | Select-Object OsName, OsVersion, OsBuildNumber
Se la build è precedente alla 1709 (o si tratta di Windows Server 2016 / 2012 R2), considera di allineare il WPT alla stessa epoca del sistema o, idealmente, aggiornare l’OS a una versione più recente (ad es. Server 2019 o Windows 10/11 supportati).
Allinea la versione del WPT
- Disinstalla completamente il WPT e i componenti correlati (“Windows Performance Toolkit”, eventuali voci “Windows Kits”).
- Elimina eventuali directory residue:
rd /s /q "C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit" rd /s /q "C:\Program Files (x86)\Windows Kits\10\Windows Performance Analyzer"
Nota: cancella solo le cartelle del WPT; non rimuovere altri SDK/WDK se li usi. - Installa il WPT che corrisponde alla famiglia del tuo OS (es. ADK 1607 per Windows 10 1607/Server 2016) oppure, se l’OS è 1709 o successivo, l’ultima versione disponibile.
- Installazione “pulita”:
- Usa l’installer dell’ADK selezionando solo Windows Performance Toolkit.
- Per ambienti senza Internet, l’installer dell’ADK supporta il
/layout <cartella>
per scaricare i file offline.
Aggiorna le dipendenze di runtime
- Visual C++ Redistributable 2015–2022 (x86 e x64) aggiornati.
- .NET Framework (sulle versioni moderne di Windows è già incluso 4.7+; assicurati che sia patchato).
- Opzionale con winget (se disponibile):
winget install Microsoft.VCRedist.2015+.x64 winget install Microsoft.VCRedist.2015+.x86
Esegui WRPUI con privilegi elevati
In alcuni ambienti le librerie di UI Automation vengono caricate correttamente solo con un token amministrativo. Prova a cliccare con il tasto destro → Esegui come amministratore. In alternativa, abilita temporaneamente “Esegui questo programma come amministratore” nelle proprietà dell’eseguibile.
Ripara i file di sistema
Se sospetti DLL corrotte o mancanti:
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
Al termine, riavvia e tenta di avviare nuovamente WRPUI.
Individua conflitti di DLL (ProcMon / Path)
- Avvia Process Monitor e imposta i filtri:
- Process Name is
WRPUI.exe
- Operation is
Load Image
oCreateFile
- Path ends with
uiautomationcore.dll
- Process Name is
- Controlla da quale percorso viene caricata la DLL. Deve essere
%SystemRoot%\System32\uiautomationcore.dll
. Se proviene da cartelle applicative o di terze parti, rimuovi/riordina quelle voci nelPATH
o rinomina la DLL superflua (previo backup). - Verifica le versioni effettive direttamente da PowerShell:
Get-Item "$env:windir\System32\uiautomationcore.dll" | Select-Object Name,@{N='FileVersion';E={$_.VersionInfo.FileVersion}} Get-Item "C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\WindowsPerformanceRecorderUI.dll" | Select-Object Name,@{N='FileVersion';E={$_.VersionInfo.FileVersion}}
Controlla le policy di sicurezza
- AppLocker: se blocca l’eseguibile o le DLL del WPT, crea una regola temporanea di allow-list per test.
- Controlled Folder Access (Defender): aggiungi WRPUI.exe/WPA.exe alle eccezioni se vedi eventi di blocco.
- Server Core: l’interfaccia grafica non è supportata; usa direttamente
wpr.exe
.
Quando aggiornare il sistema operativo
Se WPT moderno è un requisito (per profili o funzionalità introdotte di recente) e il server è Windows Server 2016 o precedente, la soluzione più robusta è aggiornare almeno a Windows Server 2019 o usare una workstation Windows 10/11 aggiornata per acquisire/analizzare le tracce. In alternativa, resta sulla linea di WPT 1607 per restare compatibile con Server 2016, accettando le limitazioni dei profili meno recenti.
Workaround efficace: usa la riga di comando (wpr.exe
)
Se l’errore riguarda solo la GUI, la raccolta delle tracce ETW continua a essere possibile e affidabile tramite CLI.
Avvio rapido
- Apri Prompt dei comandi (amministratore).
- Avvia una sessione con un profilo generico adatto alla maggior parte dei casi:
wpr -start GeneralProfile -filemode
- Riproduci il problema/lo scenario di performance.
- Arresta e salva:
wpr -stop C:\Traces\scenario.etl
Profili utili
- Elenco profili disponibili:
wpr -profiles
- Traccia focalizzata su CPU e I/O:
wpr -start CPU -start DiskIO -filemode
- Scenario avvio (on/off):
wpr -onoffscenario Boot -filemode
Nota: seguire le istruzioni a schermo per riavvio e acquisizione. - Uso di profili .wprp personalizzati (se disponibili):
wpr -start "C:\Percorso\Profilo.wprp" -filemode
Le tracce .etl
possono essere aperte su una postazione Windows 10/11 aggiornata con Windows Performance Analyzer (WPA), anche se la raccolta è avvenuta su un server più vecchio.
Soluzioni proposte (in dettaglio)
- Verifica corrispondenza di versioni
- Se l’OS è < 1709: installa un WPT della stessa epoca (es. 1607) oppure aggiorna l’OS.
- Se l’OS è ≥ 1709: mantieni WPT aggiornato; in caso di errore, prosegui con i passi successivi.
- Reinstalla il Windows Performance Toolkit
- Disinstalla tutte le voci “Windows Performance Toolkit/Analyzer”.
- Riavvia, elimina cartelle residue, reinstalla con l’ADK scegliendo solo WPT.
- Installa/aggiorna le dipendenze
- Visual C++ Redistributable 2015‑2022 (x86 e x64).
- Ultimi aggiornamenti Windows tramite Impostazioni → Windows Update → Verifica aggiornamenti.
- Esegui WRPUI.exe come amministratore
- Talvolta le librerie UIA non vengono caricate senza privilegi elevati.
- Controllo e riparazione dei file di sistema
sfc /scannow DISM /Online /Cleanup-Image /RestoreHealth
Diagnostica rapida: script e verifiche
Comandi PowerShell per ridurre i tempi di analisi:
# 1) Versione del sistema
Get-ComputerInfo | Select-Object OsName, OsVersion, OsBuildNumber
2) Versioni delle DLL critiche (UIA e WPR UI)
Get-Item "$env:windir\System32\uiautomationcore.dll" |
Select-Object FullName,@{N='Version';E={$_.VersionInfo.FileVersion}}
Get-Item "C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\WindowsPerformanceRecorderUI.dll" |
Select-Object FullName,@{N='Version';E={$_.VersionInfo.FileVersion}}
3) Kit Windows installati (per farsi un’idea della “famiglia” WPT disponibile)
Get-ChildItem "C:\Program Files (x86)\Windows Kits" -Directory |
Select-Object FullName, Name
Buone pratiche operative
- Non “spostare” cartelle del WPT tra macchine diverse: i binari dipendono da componenti di sistema e registrazioni COM locali.
- Esegui la raccolta sul server ma analizza su una workstation aggiornata: riduci l’impatto e sfrutti WPA più recente.
- Documenta le versioni: annota build OS, versione WPT, versione di
uiautomationcore.dll
; velocizza la collaborazione tra team. - Evita DLL “third‑party” di UIA: copie legacy lasciate da vecchi software sono una causa comune di shadowing.
FAQ
Posso usare l’ultima versione del WPT su Windows Server 2016?
Non è consigliato: le build moderne invocano API UIA assenti in Server 2016. Usa WPT 1607 o aggiorna l’OS.
La sola reinstallazione del WPT risolve sempre?
No. Se l’OS è incompatibile, l’errore persiste. La reinstallazione è utile quando la causa è un danneggiamento o una dipendenza mancante.
La riga di comando raccoglie le stesse informazioni?
Sì, wpr.exe
usa gli stessi profili ETW della GUI. L’analisi si effettua con WPA anche su un PC diverso.
Devo installare sia x86 sia x64 dei ridistribuibili VC++?
Sì, molte applicazioni a 64 bit dipendono ancora da componenti a 32 bit o installano strumenti misti.
Checklist finale (riepilogo operativo)
- Verifica che il sistema sia almeno Windows 10 1709 / Server 2019. Se non puoi aggiornarlo, installa un WPT della stessa era (es. 1607 per Server 2016).
- Disinstalla e reinstalla WPT; assicurati di avere i Visual C++ Redistributable 2015‑2022 aggiornati (x86 e x64).
- Applica le patch di sistema, esegui
sfc
eDISM
, quindi prova ad avviare nuovamente Windows Performance Recorder come amministratore. - Se l’errore persiste, usa
wpr.exe
per raccogliere le tracce e analizzale con WPA su una macchina aggiornata.
Esempi d’uso pratici di wpr.exe
Di seguito alcune ricette “copy & paste” per iniziare subito:
Obiettivo | Comando | Note |
---|---|---|
Traccia generale (CPU+I/O) | wpr -start GeneralProfile -filemode | Profilo bilanciato, basso overhead. |
Ispezione CPU intensa | wpr -start CPU -filemode | Campionamento CPU dettagliato; limita la durata. |
Scenario avvio | wpr -onoffscenario Boot -filemode | Segui le istruzioni a schermo per il riavvio e il salvataggio della traccia. |
Stop e salvataggio | wpr -stop C:\Traces\trace.etl | Chiude la sessione corrente e genera il file .etl . |
Modello decisionale rapido
- OS < 1709: WPT “nuovo” non parte → installa WPT 1607 o usa
wpr.exe
. - OS ≥ 1709: WPT nuovo dovrebbe partire → se non parte: reinstalla WPT → aggiorna VC++/.NET → SFC/DISM → controlla conflitti → valuta policy di sicurezza.
- Ambiente server critico: preferisci sempre
wpr.exe
per ridurre dipendenze e impatto.
Conclusioni
L’errore “UiaRaiseNotificationEvent – Entry Point not Found” su WRPUI.exe è quasi sempre il sintomo di una mancata corrispondenza tra WPT e sistema operativo. Una volta allineate le versioni (o spostata l’acquisizione su una macchina aggiornata), la raccolta e l’analisi delle tracce tornano affidabili. Nei rari casi in cui la compatibilità è corretta ma la GUI non parte, la combinazione di reinstallazione pulita, aggiornamento delle dipendenze, SFC/DISM e verifica dei conflitti di DLL porta nella pratica alla risoluzione.