Można uzyskać cały "przyrostek", tj. Część po Application.exe
, korzystając z tej samej infrastruktury, którą ma struktura .NET (np. Liczniki wydajności).
Istnieje metoda System.Runtime.Versioning.VersioningHelper.MakeVersionSafeName, która może to zrobić. Zauważ, że metoda jest opisana jako "Infrastruktura" i "Ten interfejs API obsługuje infrastrukturę .NET Framework i nie jest przeznaczony do użycia bezpośrednio z Twojego kodu.", Ale mimo to jest publiczny. Nie sądzę, że istnieje jakikolwiek "lepiej obsługiwany" sposób uzyskania potrzebnych informacji. Przynajmniej jest bardziej odporny i odporny na przyszłe zmiany, a następnie przetwarza informacje na podstawie dokumentacji.
string suffix = System.Runtime.Versioning.VersioningHelper.MakeVersionSafeName("",
System.Runtime.Versioning.ResourceScope.Machine,
System.Runtime.Versioning.ResourceScope.AppDomain));
Zwraca na przykład _p4472_r16_ad1
.
Oczywiście można również bezpośrednio przekazać nazwę urządzenia do licznika wydajności, aby uzyskać pełną nazwę. Użycie powyższego pustego ciągu jest tylko sztuczką, aby uzyskać "sufiks".
string str = VersioningHelper.MakeVersionSafeName("Application.exe",
ResourceScope.Machine, ResourceScope.AppDomain);
// str -> "Application.exe_p4472_r16_ad1".
Klasa VersioningHelpers
ma również prywatną metodę GetRuntimeId()
, ale biorąc pod uwagę powyższe, nie sądzę, że jest konieczne, aby wykorzystać odbicie na to osiągnąć to, czego potrzebujesz.
Czy korzystanie z Process.GetProcesses pomaga? http://msdn.microsoft.com/en-us/library/system.diagnostics.process.getprocesses.aspx –
Nie ma tego, czego szukam. – TheGateKeeper
To powieść. Co znaczy "p4952" i "ad1"? Czy to twój własny licznik? Następnie opublikuj kod użyty do jego utworzenia. –