从其可执行文件的路径获取服务名称

Sev*_*ron 2 windows delphi

我有一个可执行文件的路径,它是一个正在运行的服务应用程序

例如: C:\Program Files (x86)\Someapp\somesvc.exe

我想停下来启动它,为此我想我需要得到服务的名称,因为它在[this]回答中列出.

我可能通过迭代所有服务的所有注册表项HKLM\System\CurrentControlSet\Services,并检查ImagePath注册表项是否与我的可执行路径匹配来获得此功能.

这个解决方案应该可行,但对我来说似乎不对.有一个更好的方法吗?

Rem*_*eau 6

使用EnumServicesStatus()EnumServicesStatusEx()枚举已安装的服务.这将给你每个服务的名称,但不是它的名称ImagePath.要检索它,您可以使用打开每个服务OpenService(SERVICE_QUERY_CONFIG),然后ImagePath使用它QueryServiceConfig().