2012-05-28 18 views
12

Preformance Zähler sind böse. benutze sie nicht.beschädigte Leistungsindikatoren?

if(PerformanceCounterCategory.Exists("ILoveYou") ) // is true 
{ 
    PerformanceCounterCategory.Delete("ILoveYou"); 
    //throws exception The **configuration registry** key is invalid 
} 

at System.Diagnostics.PerformanceCounterLib.RegisterFiles(String arg0, Boolean unregister) 
at System.Diagnostics.PerformanceCounterLib.UnregisterCategory(String categoryName) 
at System.Diagnostics.PerformanceCounterCategory.Delete(String categoryName) 
at WindowsFormsApplication1.Program.SetupCategory() 

alles fand ich, ist dies: http://blogs.msdn.com/b/oanapl/archive/2009/04/24/fix-corrupted-performance-counters.aspx (mit LODCTR/R)

und es hilft nicht. weil ich keine Ahnung habe, über welche Datei sie sprechen. Gibt es irgendwelche anderen Ideen?

PS Ich benutze Windows XP SP3 kann dies das Problem sein? Ich verstehe, dass Leistungsindikatoren vollständig unterstützt werden sollen, wenn ich die Auslagerungsdatei nicht abbringe.

um dies klar zu machen mein Problem ist, dass ich meine Zähler nicht DEINSTALLIEREN kann.

+0

In dem Link, den Sie gaben, gibt es einen anderen [link] (http://support.microsoft.com/?kbid=300956). Haben Sie diese Schritte befolgt und trotzdem funktioniert es nicht? – Schaliasos

+0

@Schaliasos Ich habe den Link verfolgt, aber ich habe nicht verstanden, was ich im Code tun soll, ich kann theoretisch ihre Anweisungen in Code einfügen, aber das ist komplex lang und sehr hässlich. – Nahum

+0

jetzt erkannte ich, dass ich die Links Anweisungen nicht folgen konnte der Befehl erfordert etwas Art von Datei, ich habe keine Ahnung, welche Art.und kann keine Erklärung finden – Nahum

Antwort

4

Meine Firma hat Probleme damit, dass die Leistungsindikatoren regelmäßig beschädigt werden.Wenn es ein Problem mit den tatsächlichen Zähler korrupt ist, können Sie für beschädigte Leistungsindikatoren überprüfen, indem Sie:

  1. Going to start | run | perfmon
  2. Klicken Sie auf OK
  3. Klicken Sie auf die Schaltfläche Hinzufügen in der Werkzeugleiste auf der rechten Seite (“ +“Zeichen-Taste)
  4. Stellen Sie sicher, dass das proformance Objekt Dropdown-Menü Elemente enthält und nicht nur Zahlen
Wenn die Zähler sind Zahlen oder Blank:
  • und benennen Sie diese 3 Dateien in %windir%\system32:
    • Perfc009.dat
    • Perfh009.dat
    • Perfi009.dat
  • die Windows XP-Installations-CD einlegen
  • Durchsuchen, um ihre CD-Laufwerk und in den Ordner I386 (d D:\I386)
  • liegen die gleichen Dateien hier
  • Kopieren und einfügen sie von der CD zurück in System32
  • den Computer neu starten.
  • Dies ist die beste Lösung, die wir für das Problem gefunden zu haben.

    1

    Leistungsindikatoren bevorzugen Geschwindigkeit gegenüber Benutzerfreundlichkeit und Korrektheit. Die Leistungsindikatoren in XP und späteren Windows-Versionen können leicht beschädigt werden. Es ist z.B. Eine sehr schlechte Vorgehensweise, um beim Start Ihrer App eine neue Leistungsindikatorkategorie zu erstellen und diese beim Herunterfahren zu löschen. Die ständige Änderung der Leistungsindikatorkategorien ist eine sichere Methode, um korrupte Leistungsindikatoren zu erhalten.

    Ich würde die Kategorien nur erstellen, wenn es noch nicht existiert und es dort lassen, bis Ihre App deinstalliert wird. Unter welchen Umständen möchten Sie eine Leistungsindikatorkategorie löschen? Die grundlegende Antwort, die ich Ihnen geben kann, besteht darin, Leistungsindikatorkategorien nicht zu löschen, es sei denn, Sie müssen dies tun.

    Ein guter Link zum Erstellen von Leistungsindikatoren über Lodctr oder EXCTRLST ist von RedGate. Sie können es herunterladen here.

    Edit1

    Zuerst müssen Sie ein Tool finden, das Ihr Problem zu beheben ist. Exctrlst gibt Ihnen eine Benutzeroberfläche, um beschädigte Preformance-Zähler wieder zu aktivieren.

    Wenn das funktioniert, können Sie jetzt mit Procmon überprüfen, welche Registrierungsschlüssel während des Reparaturvorgangs geschrieben werden und diese als Eingabe für Ihre Autoreparaturfunktion verwenden.

    +0

    das ist mein Neuinstaller. Das ist extacly mein probelm. – Nahum

    3

    Wenn Sie eine ähnliche Maschine, die Sie lodctr /S:mycounters.ini ausführen können alle Zähler auf ‚mycounters.ini‘ zu exportieren und sie dann mit lodctr /R:mycounters.ini auf einer defekten Maschine importieren. Bedenken Sie jedoch, dass ich dieses Verfahren nur auf zwei Rechnern verwendet habe, von denen ich wusste, dass sie in Bezug auf Leistungsindikatoren fast identisch sind. Ich weiß nicht, ob es Probleme mit Maschinen geben würde, die nicht übereinstimmen.

    +0

    Ich habe es auf der gleichen Maschine mit Problemen gemacht: gesichert, manuell bearbeitete Backup-Text-Datei (tatsächlich mehrere Zähler entfernt) und als Ergebnisdatei wiederhergestellt und es hat funktioniert. – Sasha

    2

    Für mich

    es war ausreichend, um alle Leistungsindikatoren neu erstellen mit

    lodctr /R 
    

    von einer Befehlszeile mit administrativen Rechten (nach this, aber die manuelle Erholung des Basis Skipping Leistungsindikatoren)

    Wenn in der Registrierung in

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009 
    
    0 die Liste der Leistungsindikatoren überprüft

    Es stellte sich heraus, dass der Inhalt dieses Schlüssels begann mit Lose von Leerzeichen. Es gab eine Liste von Leistungsindikatoren mit hohen Zählerindizes ganz am Ende dieses Schlüssels. Nach dem Aufruf des obigen Befehls enthielt der Schlüssel korrekt auch die Basisleistungszähler (und enthielt nicht mehr die führenden Leerzeichen).