2015-08-25 46 views
2

基本上,我有一個服務管理器中的「顯示名稱」服務的大型列表(即「後臺智能傳輸服務」),我試圖瞭解如何將它們「轉換」爲服務「密鑰名稱」(即「BITS」)。查看它,我看到有另一種語言(德爾福)編寫的one solution,似乎沒有使用任何類型的字典,這意味着我應該有一些方法來在C#中執行它。也許我只是在錯誤地使用Google,但是我發現很少有相關的點擊。有沒有人想出如何做到這一點?將服務「顯示名稱」轉換爲「密鑰名稱」C#

回答

4

這將打印出來的顯示名稱,然後它的服務名稱(簡稱鍵名在你的問題):

var services = ServiceController.GetServices(); 
foreach(var service in services) 
{ 
    Console.WriteLine("{0} = {1}", service.DisplayName, service.ServiceName); 
} 

參考System.ServiceProcess獲得訪問的ServiceController。

編輯:要轉換到詞典(爲便於看看UPS)的使用

var serviceNameLookups = ServiceController.GetServices().ToDictionary(s => s.DisplayName, s => s.ServiceName); 

然後通過檢索:

string serviceName; 
serviceNameLookups.TryGetValue("Background Intelligent Transfer Service", out serviceName) 
+0

啊,早知道這樣的事情會在這附近浮動!希望這個答案能讓Google的結果更穩健。 – KnightOfNi

+0

@KnightOfNi如果它對您有幫助,請隨時將其標記爲答案。如果由於未創建字典而未將其標記爲答案,我將在一秒內對其進行編輯... – Plymouth223

+0

對不起,我應該標記爲已接受。我一直在迭代創建詞典「手動」,但我認爲你的方法有點快,所以我很高興我等待:) – KnightOfNi