PerformanceCounterCategory.GetInstanceNames Methode

Definition

Ruft die Liste der Leistungsobjektinstanzen ab, die dieser Kategorie zugeordnet sind.

public:
 cli::array <System::String ^> ^ GetInstanceNames();
public string[] GetInstanceNames();
member this.GetInstanceNames : unit -> string[]
Public Function GetInstanceNames () As String()

Gibt zurück

String[]

Ein Array von Zeichenfolgen, die die Namen der Leistungsobjektinstanz darstellen, die dieser Kategorie zugeordnet sind, oder, wenn die Kategorie nur eine Leistungsobjektinstanz enthält, ein Array mit einem Eintrag, das eine leere Zeichenfolge ("") enthält.

Ausnahmen

Die CategoryName Eigenschaft ist null. Die Eigenschaft wurde möglicherweise nicht festgelegt.

-oder-

Die Kategorie verfügt nicht über eine zugeordnete Instanz.

Fehler beim Aufruf einer zugrunde liegenden System-API.

Code, der ohne Administratorrechte ausgeführt wird, hat versucht, einen Leistungsindikator zu lesen.

Beispiele

Im folgenden Codebeispiel wird eine Liste der PerformanceCounter Objekte in einer PerformanceCounterCategory. Zunächst wird ein PerformanceCounterCategory-Objekt erstellt, wobei der entsprechende Konstruktor basierend darauf verwendet wird, ob ein Computername angegeben wurde. Anschließend wird GetInstanceNames die Instanznamen als Array Stringzurückgegeben, von dem sie sortiert und angezeigt wird.

public static void Main(string[] args)
{
    string categoryName = "";
    string machineName = "";
    PerformanceCounterCategory pcc;
    string[] instances;

    // Copy the supplied arguments into the local variables.
    try
    {
        categoryName = args[0];
        machineName = args[1]=="."? "": args[1];
    }
    catch
    {
        // Ignore the exception from non-supplied arguments.
    }

    try
    {
        // Create the appropriate PerformanceCounterCategory object.
        if (machineName.Length>0)
        {
            pcc = new PerformanceCounterCategory(categoryName, machineName);
        }
        else
        {
            pcc = new PerformanceCounterCategory(categoryName);
        }

        // Get the instances associated with this category.
        instances = pcc.GetInstanceNames();
    }
    catch(Exception ex)
    {
        Console.WriteLine("Unable to get instance information for " +
            "category \"{0}\" on " +
            (machineName.Length>0? "computer \"{1}\":": "this computer:"),
            categoryName, machineName);
        Console.WriteLine(ex.Message);
        return;
    }

    //If an empty array is returned, the category has a single instance.
    if (instances.Length==0)
    {
        Console.WriteLine("Category \"{0}\" on " +
            (machineName.Length>0? "computer \"{1}\"": "this computer") +
            " is single-instance.", pcc.CategoryName, pcc.MachineName);
    }
    else
    {
        // Otherwise, display the instances.
        Console.WriteLine("These instances exist in category \"{0}\" on " +
            (machineName.Length>0? "computer \"{1}\".": "this computer:"),
            pcc.CategoryName, pcc.MachineName);

        Array.Sort(instances);
        int objX;
        for(objX=0; objX<instances.Length; objX++)
        {
            Console.WriteLine("{0,4} - {1}", objX+1, instances[objX]);
        }
    }
}
Sub Main(ByVal args() As String)
    Dim categoryName As String = ""
    Dim machineName As String = ""
    Dim pcc As PerformanceCounterCategory
    Dim instances() As String

    ' Copy the supplied arguments into the local variables.
    Try
        categoryName = args(0)
        machineName = IIf(args(1) = ".", "", args(1))
    Catch ex As Exception
        ' Ignore the exception from non-supplied arguments.
    End Try

    Try
        ' Create the appropriate PerformanceCounterCategory object.
        If machineName.Length > 0 Then
            pcc = New PerformanceCounterCategory(categoryName, machineName)
        Else
            pcc = New PerformanceCounterCategory(categoryName)
        End If

        ' Get the instances associated with this category.
        instances = pcc.GetInstanceNames()

    Catch ex As Exception
        Console.WriteLine("Unable to get instance information for " & _
             "category ""{0}"" on " & IIf(machineName.Length > 0, _
             "computer ""{1}"":", "this computer:"), _
             categoryName, machineName)
        Console.WriteLine(ex.Message)
        Return
    End Try

    'If an empty array is returned, the category has a single instance.
    If instances.Length = 0 Then
        Console.WriteLine( _
            "Category ""{0}"" on " & IIf(machineName.Length > 0, _
            "computer ""{1}""", "this computer") & _
            " is single-instance.", pcc.CategoryName, pcc.MachineName)
    Else
        ' Otherwise, display the instances.
        Console.WriteLine( _
            "These instances exist in category ""{0}"" on " & _
            IIf(machineName.Length > 0, _
                "computer ""{1}"".", "this computer:"), _
            pcc.CategoryName, pcc.MachineName)

        Array.Sort(instances)
        Dim objX As Integer
        For objX = 0 To instances.Length - 1
            Console.WriteLine("{0,4} - {1}", objX + 1, instances(objX))
        Next objX
    End If
End Sub

Hinweise

Note

Um Leistungsindikatoren aus einer nicht interaktiven Anmeldesitzung in Windows Vista und höher, Windows XP Professional x64 Edition oder Windows Server 2003 zu lesen, müssen Sie entweder Mitglied der Gruppe "Benutzer der Leistungsüberwachung" sein oder über Administratorrechte verfügen.

Um zu vermeiden, dass Sie Ihre Berechtigungen für den Zugriff auf Leistungsindikatoren in Windows Vista und höher erhöhen müssen, fügen Sie sich der Gruppe "Benutzer der Leistungsüberwachung" hinzu.

In Windows Vista und höher bestimmt die Benutzerkontensteuerung (User Account Control, UAC) die Berechtigungen eines Benutzers. Wenn Sie Mitglied der Gruppe "Integrierte Administratoren" sind, werden Ihnen zwei Laufzeitzugriffstoken zugewiesen: ein Standardbenutzerzugriffstoken und ein Administratorzugriffstoken. Standardmäßig befinden Sie sich in der Standardbenutzerrolle. Um den Code auszuführen, der auf Leistungsindikatoren zugreift, müssen Sie zuerst Ihre Berechtigungen vom Standardbenutzer zum Administrator erhöhen. Sie können dies tun, wenn Sie eine Anwendung starten, indem Sie mit der rechten Maustaste auf das Anwendungssymbol klicken und angeben, dass Sie als Administrator ausführen möchten.

Gilt für:

Weitere Informationen