ANAVEM
Languageen
Windows Performance Monitor displaying system performance counters and metrics on multiple monitors
Event ID 2004ErrorPerflibWindows

ID d'événement Windows 2004 – Perflib : Échec de l'enregistrement du fournisseur de compteurs de performance

L'ID d'événement 2004 indique qu'un fournisseur de compteurs de performance n'a pas réussi à s'enregistrer avec le Windows Performance Toolkit. Cela se produit généralement lorsque les DLL de compteurs de performance sont corrompues, manquantes ou incompatibles avec le système actuel.

Emanuel DE ALMEIDAEmanuel DE ALMEIDA
18 mars 202612 min de lecture 0
Event ID 2004Perflib 5 méthodes 12 min
Référence événement

Signification de cet événement

L'ID d'événement Windows 2004 représente une défaillance critique dans le sous-système des compteurs de performance où un fournisseur de compteur spécifique ne peut pas s'enregistrer auprès de la bibliothèque de performance (Perflib). La bibliothèque de performance sert de registre central pour tous les compteurs de performance dans Windows, gérant la collecte et la distribution des données de performance aux applications de surveillance.

Lorsque cet événement se produit, Windows enregistre des informations détaillées, y compris le nom du fournisseur de compteur, la DLL spécifique qui n'a pas pu se charger, et souvent un code d'erreur accompagnant. Les codes d'erreur courants incluent 0x80070002 (fichier introuvable), 0x8007007E (module introuvable), ou 0x80070005 (accès refusé). Ces codes fournissent des indices précieux pour résoudre le problème sous-jacent.

L'impact de cet événement varie en fonction du fournisseur de compteur qui a échoué. Les compteurs critiques pour le système comme les échecs de Processeur, Mémoire ou DisqueLogique peuvent avoir un impact significatif sur les capacités de surveillance, tandis que les compteurs d'applications tierces peuvent n'affecter que des scénarios de surveillance spécifiques. Dans les environnements d'entreprise, cet événement peut déclencher des alertes de surveillance et peut indiquer des problèmes de santé du système plus larges nécessitant une attention immédiate.

Les échecs d'enregistrement des compteurs de performance ont souvent un effet de cascade, ce qui signifie qu'un fournisseur échoué peut empêcher d'autres de se charger correctement. Cela crée un effet domino où plusieurs entrées d'ID d'événement 2004 apparaissent en succession rapide, chacune représentant un fournisseur de compteur différent ayant échoué.

S'applique à

Windows 10Windows 11Windows Server 2019/2022/2025
Analyse

Causes possibles

  • Fichiers DLL de compteur de performance corrompus ou manquants
  • Corruption du registre dans les clés de configuration des compteurs de performance
  • Permissions insuffisantes pour le service de compteur de performance
  • Incompatibilité de version entre les fournisseurs de compteurs et la version de Windows
  • Mises à jour Windows échouées qui ont endommagé l'infrastructure des compteurs de performance
  • Logiciel tiers installant des compteurs de performance incompatibles
  • Logiciel antivirus bloquant ou mettant en quarantaine les DLL de compteurs de performance
  • Corruption de disque affectant les fichiers système ou le registre
  • Dépendances de service ne démarrant pas correctement au démarrage
  • Corruption de mémoire affectant les processus de chargement des DLL
Méthodes de résolution

Étapes de dépannage

01

Identifier le fournisseur de compteur échoué dans le Visualiseur d'événements

Commencez par examiner les détails spécifiques de l'ID d'événement 2004 pour identifier quel fournisseur de compteur de performance a échoué.

  1. Ouvrez Observateur d'événements en appuyant sur Win + R, en tapant eventvwr.msc, et en appuyant sur Entrée
  2. Accédez à Journaux WindowsSystème
  3. Filtrez le journal pour l'ID d'événement 2004 en cliquant avec le bouton droit sur le journal Système et en sélectionnant Filtrer le journal actuel
  4. Entrez 2004 dans le champ ID d'événements et cliquez sur OK
  5. Double-cliquez sur l'entrée la plus récente de l'ID d'événement 2004 pour voir les détails
  6. Notez le nom du fournisseur de compteur et tout code d'erreur dans la description de l'événement
  7. Utilisez PowerShell pour obtenir des informations détaillées sur l'événement :
Get-WinEvent -FilterHashtable @{LogName='System'; Id=2004} -MaxEvents 5 | Format-List TimeCreated, Id, LevelDisplayName, Message

Enregistrez le nom spécifique du fournisseur de compteur et le code d'erreur pour les utiliser dans les étapes de dépannage ultérieures.

02

Reconstruire le registre des compteurs de performance

Reconstruisez le registre des compteurs de performance pour corriger les configurations de compteurs corrompues.

  1. Ouvrez Invite de commandes en tant qu'administrateur
  2. Arrêtez le service Journaux et alertes de performance :
net stop pla
  1. Accédez au répertoire system32 et reconstruisez les compteurs :
cd /d %windir%\system32
lodctr /R
  1. Si la reconstruction échoue, réinitialisez le dépôt des compteurs de performance :
winmgmt /resyncperf
  1. Redémarrez le service Journaux et alertes de performance :
net start pla
  1. Vérifiez la correction en vérifiant si de nouvelles entrées Event ID 2004 apparaissent après le redémarrage
  2. Utilisez PowerShell pour confirmer que les fournisseurs de compteurs se chargent :
Get-Counter -ListSet * | Where-Object {$_.CounterSetName -like "*Processor*"} | Select-Object CounterSetName, Description
Avertissement : La commande lodctr /R reconstruit tous les compteurs de performance et peut prendre plusieurs minutes pour se terminer.
03

Vérifier et réparer les fichiers DLL des compteurs de performance

Vérifiez l'intégrité des fichiers DLL des compteurs de performance et réparez-les si nécessaire.

  1. Identifiez la DLL spécifique mentionnée dans le message d'erreur de l'ID d'événement 2004
  2. Vérifiez si la DLL existe à l'emplacement attendu :
$dllPath = "C:\Windows\System32\[CounterDLL].dll"
Test-Path $dllPath
Get-ItemProperty $dllPath | Select-Object Name, Length, LastWriteTime
  1. Exécutez le Vérificateur de fichiers système pour réparer les fichiers système corrompus :
sfc /scannow
  1. Si SFC trouve des problèmes, exécutez DISM pour réparer l'image Windows :
DISM /Online /Cleanup-Image /RestoreHealth
  1. Vérifiez les entrées de registre des compteurs de performance :
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009" | Select-Object Counter, Help
  1. Si la DLL est manquante, extrayez-la d'une source d'installation de Windows ou utilisez :
sxstrace trace -logfile:C:\temp\sxstrace.etl
# Reproduisez l'erreur, puis :
sxstrace parse -logfile:C:\temp\sxstrace.etl -outfile:C:\temp\sxstrace.txt
  1. Redémarrez le système et surveillez la récurrence de l'ID d'événement 2004
04

Réinitialiser les autorisations et services des compteurs de performance

Réinitialisez les autorisations et les configurations de service pour le sous-système de compteur de performance.

  1. Ouvrez Services.msc et vérifiez que ces services sont en cours d'exécution :
  2. Performance Logs and Alerts (pla)
  3. Windows Management Instrumentation (winmgmt)
  4. Réinitialisez le référentiel WMI si les compteurs de performance sont basés sur WMI :
net stop winmgmt /y
winmgmt /resetrepository
net start winmgmt
  1. Vérifiez et réinitialisez les autorisations des compteurs de performance :
$acl = Get-Acl "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib"
$acl.Access | Format-Table IdentityReference, FileSystemRights, AccessControlType
  1. Accordez les autorisations nécessaires au groupe Performance Counter Users :
net localgroup "Performance Log Users" /add "NT AUTHORITY\INTERACTIVE"
net localgroup "Performance Monitor Users" /add "NT AUTHORITY\INTERACTIVE"
  1. Réinitialisez le descripteur de sécurité du compteur de performance :
lodctr /S:"C:\temp\perfcounters_backup.ini"
lodctr /R:"C:\temp\perfcounters_backup.ini"
  1. Redémarrez le système et vérifiez la fonctionnalité des compteurs de performance :
Get-Counter "\Processor(_Total)\% Processor Time" -SampleInterval 1 -MaxSamples 3
Astuce pro : Sauvegardez toujours la configuration des compteurs de performance avant de faire des modifications en utilisant lodctr /S.
05

Analyse avancée du registre et suppression des contre-mesures tierces

Effectuez un dépannage avancé en analysant la corruption du registre et en supprimant les compteurs tiers problématiques.

  1. Exportez le registre des compteurs de performance pour analyse :
reg export "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib" C:\temp\perflib_backup.reg
  1. Analysez la structure du registre des compteurs de performance :
$perflib = Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib"
$perflib | ForEach-Object {
    $lang = $_.PSChildName
    $counters = Get-ItemProperty $_.PSPath -Name "Counter" -ErrorAction SilentlyContinue
    if ($counters) {
        Write-Output "Langue : $lang, Entrées de compteur : $($counters.Counter.Count)"
    }
}
  1. Identifiez et supprimez les compteurs de performance tiers problématiques :
$services = Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\*" | Where-Object {$_.ObjectName -like "*PerfCounter*"}
$services | Select-Object PSChildName, DisplayName, ObjectName
  1. Supprimez les fournisseurs de compteurs spécifiques qui posent problème :
unlodctr "[CounterProviderName]"
  1. Vérifiez les entrées de compteurs de performance orphelines :
$orphaned = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009" -Name "Counter" | 
    ForEach-Object {$_.Counter} | Where-Object {$_ -match "[0-9]+"} | 
    ForEach-Object {if (!(Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\$_" -ErrorAction SilentlyContinue)) {$_}}
$orphaned
  1. Nettoyez les entrées orphelines et reconstruisez la base de données des compteurs :
lodctr /R
winmgmt /resyncperf
  1. Surveillez les performances du système et vérifiez que tous les compteurs critiques sont fonctionnels :
$criticalCounters = @("\Processor(_Total)\% Processor Time", "\Memory\Available MBytes", "\LogicalDisk(_Total)\% Disk Time")
$criticalCounters | ForEach-Object {
    try {
        Get-Counter $_ -MaxSamples 1
        Write-Output "$_ - OK"
    } catch {
        Write-Output "$_ - ÉCHEC : $($_.Exception.Message)"
    }
}
Avertissement : La suppression des compteurs de performance peut affecter les applications de surveillance. Testez toujours d'abord dans un environnement non productif.

Aperçu

L'ID d'événement 2004 de la source Perflib se déclenche lorsque Windows ne parvient pas à enregistrer un fournisseur de compteurs de performance lors du démarrage du système ou de l'initialisation du service. Cet événement apparaît généralement dans le journal Système et indique qu'une DLL de compteur de performance spécifique n'a pas pu être chargée ou initialisée correctement. L'événement contient des détails sur le fournisseur de compteurs qui a échoué et inclut souvent des codes d'erreur qui aident à identifier la cause principale.

Les compteurs de performance sont essentiels pour la surveillance du système, fournissant des métriques en temps réel sur l'utilisation du CPU, la consommation de mémoire, les entrées/sorties disque et la performance des applications. Lorsqu'un fournisseur de compteurs échoue à s'enregistrer, vous perdez la visibilité sur des métriques système spécifiques, ce qui peut affecter les outils de surveillance comme Performance Monitor, System Monitor et les solutions de surveillance tierces.

Cet événement se produit couramment après les mises à jour de Windows, les installations de pilotes ou lorsque des applications tierces installent des compteurs de performance personnalisés. L'échec peut provenir d'entrées de registre corrompues, de fichiers DLL manquants, de problèmes de permissions ou d'incompatibilités de version entre le fournisseur de compteurs et la version actuelle de Windows.

Questions Fréquentes

Que signifie l'ID d'événement 2004 et pourquoi se produit-il ?+
L'ID d'événement 2004 indique qu'un fournisseur de compteur de performance n'a pas réussi à s'enregistrer auprès de la bibliothèque de performance Windows (Perflib). Cela se produit lorsque les DLL de compteur de performance sont corrompues, manquantes, ont des autorisations incorrectes ou sont incompatibles avec la version actuelle de Windows. L'événement apparaît généralement lors du démarrage du système lorsque Windows tente d'initialiser tous les compteurs de performance enregistrés.
Comment puis-je identifier quel compteur de performance spécifique cause l'ID d'événement 2004 ?+
Ouvrez l'Observateur d'événements et accédez à Journaux Windows → Système. Filtrez par ID d'événement 2004 et examinez les détails de l'événement. Le message d'erreur spécifiera le nom du fournisseur de compteur et inclura souvent le nom de fichier DLL. Vous pouvez également utiliser PowerShell : Get-WinEvent -FilterHashtable @{LogName='System'; Id=2004} | Format-List Message pour voir des informations détaillées sur les fournisseurs de compteurs échoués.
L'ID d'événement 2004 est-il critique et affectera-t-il les performances du système ?+
L'ID d'événement 2004 est un événement de niveau erreur mais n'affecte généralement pas la fonctionnalité principale du système. Cependant, il peut impacter les capacités de surveillance et peut indiquer des problèmes sous-jacents du système. Si des compteurs système critiques comme Processeur, Mémoire ou Disque échouent à se charger, les outils de surveillance n'afficheront pas de données de performance précises. Les compteurs d'applications tierces échouant n'affectent généralement que des scénarios de surveillance spécifiques.
Puis-je ignorer en toute sécurité l'ID d'événement 2004 ou dois-je le corriger immédiatement ?+
Bien que l'ID d'événement 2004 ne provoque pas de plantages système, vous devriez l'examiner et le résoudre rapidement. Les compteurs de performance échoués peuvent indiquer une corruption du registre, des fichiers système manquants ou des problèmes de permissions qui pourraient s'aggraver avec le temps. Dans les environnements d'entreprise, cet événement peut déclencher des alertes de surveillance et peut empêcher une surveillance correcte de la santé du système, rendant difficile la détection des problèmes de performance.
Que dois-je faire si lodctr /R ne résout pas l'ID d'événement 2004 ?+
Si la reconstruction des compteurs de performance avec lodctr /R ne fonctionne pas, essayez ces étapes avancées : 1) Exécutez sfc /scannow pour réparer les fichiers système, 2) Utilisez DISM /Online /Cleanup-Image /RestoreHealth pour corriger la corruption de l'image Windows, 3) Réinitialisez le référentiel WMI avec winmgmt /resetrepository, 4) Vérifiez les conflits de logiciels tiers, et 5) Envisagez de supprimer les compteurs de performance tiers problématiques en utilisant unlodctr. Si les problèmes persistent, le problème peut nécessiter une réparation ou une réinstallation de Windows.
Documentation

Références (2)

Emanuel DE ALMEIDA
Écrit par

Emanuel DE ALMEIDA

Senior IT Journalist & Cloud Architect

Microsoft MCSA-certified Cloud Architect | Fortinet-focused. I modernize cloud, hybrid & on-prem infrastructure for reliability, security, performance and cost control - sharing field-tested ops & troubleshooting.

Discussion

Partagez vos réflexions et analyses

Vous devez être connecté pour commenter.

Chargement des commentaires...