C# 将服务“显示名称”转换为“密钥名称”C

C# 将服务“显示名称”转换为“密钥名称”C,c#,C#,基本上,我在service manager ie后台智能传输服务中有一个显示名称的大列表,我正在尝试找出如何将它们转换为服务密钥名称ie位。查找它,我看到有一个用另一种语言编写的delphi,它似乎没有使用任何类型的字典,这对我来说意味着应该有某种方法用C来完成。也许我只是在谷歌上搜索错了,但我发现令人惊讶的是,与此相关的点击数很少。有人知道怎么做了吗?这将打印出显示名称,后跟您的问题中称为密钥名的服务名称: var services = ServiceController.GetService

基本上,我在service manager ie后台智能传输服务中有一个显示名称的大列表,我正在尝试找出如何将它们转换为服务密钥名称ie位。查找它,我看到有一个用另一种语言编写的delphi,它似乎没有使用任何类型的字典,这对我来说意味着应该有某种方法用C来完成。也许我只是在谷歌上搜索错了,但我发现令人惊讶的是,与此相关的点击数很少。有人知道怎么做了吗?

这将打印出显示名称,后跟您的问题中称为密钥名的服务名称:

var services = ServiceController.GetServices();
foreach(var service in services)
{
     Console.WriteLine("{0} = {1}", service.DisplayName, service.ServiceName);
}
请参考System.ServiceProcess以访问ServiceController

编辑:转换为字典以便于查找和使用

var serviceNameLookups = ServiceController.GetServices().ToDictionary(s => s.DisplayName, s => s.ServiceName);
然后通过以下方式检索:

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

啊,我就知道会有这样的东西在这附近飘荡!希望这个答案能让谷歌的搜索结果更加可靠。@KnightOfNi可以随意将它标记为答案,如果它对你有帮助的话。如果因为没有创建词典而没有将其标记为答案,我将在一秒钟内编辑它…对不起,我应该将其标记为已接受。我一直在迭代手动创建字典,但我认为您的方法要快一点,所以我很高兴等待: