Sie können das ganze "Suffix", d. H. Den Teil nach Application.exe
mit der gleichen Infrastruktur, die das .NET Framework (z. B. die Leistungsindikatoren) tut.
Es gibt die Methode System.Runtime.Versioning.VersioningHelper.MakeVersionSafeName, die das tun kann. Beachten Sie, dass die Methode wie folgt beschrieben wird: "Infrastruktur" und "Diese API unterstützt die .NET Framework-Infrastruktur und soll nicht direkt aus Ihrem Code verwendet werden.", Ist aber dennoch öffentlich. Ich denke nicht, dass es einen "besser unterstützten" Weg gibt, um die gewünschten Informationen zu bekommen. Zumindest ist es robuster und resistenter gegenüber zukünftigen Änderungen und rekonstruiert dann die Informationen basierend auf der Dokumentation.
string suffix = System.Runtime.Versioning.VersioningHelper.MakeVersionSafeName("",
System.Runtime.Versioning.ResourceScope.Machine,
System.Runtime.Versioning.ResourceScope.AppDomain));
Dies gibt zum Beispiel _p4472_r16_ad1
zurück.
Natürlich können Sie auch direkt den Basisnamen des Leistungsindikators übergeben, um direkt den vollständigen Namen zu erhalten. Die Verwendung der obigen leeren Zeichenfolge ist nur ein Trick, um einfach das "Suffix" zu erhalten.
string str = VersioningHelper.MakeVersionSafeName("Application.exe",
ResourceScope.Machine, ResourceScope.AppDomain);
// str -> "Application.exe_p4472_r16_ad1".
Die Klasse VersioningHelpers
hat auch die private Methode GetRuntimeId()
, aber die oben genannten, ich glaube nicht, dass es notwendig ist Reflexion über das verwenden erreichen, was Sie brauchen.
Hilft Ihnen die Verwendung von Process.GetProcesses? http://msdn.microsoft.com/en-us/library/system.diagnostics.process.getprocesses.aspx –
scheint nicht zu haben, nach was ich suche. – TheGateKeeper
Das ist Roman. Was bedeutet "p4952" und "ad1" dann? Ist das dein eigener Zähler? Dann poste den Code, mit dem du ihn erstellt hast. –