Есть ли способ получить имя службы из C #, с которой текущая служба была зарегистрирована при ее установке.
Например, я регистрирую один и тот же сервис дважды:
sc.exe create ServiceName1 binPath= D:\myservice.exe
sc.exe create ServiceName2 binPath= D:\myservice.exe
В моем сервисе я действительно хочу знать, являюсь ли я ServiceName1 или ServiceName2. Но, похоже, нет способа сделать это.
Я пытался позвонить ServiceBase.ServiceName
до его установки, но он просто пуст.
Я пытался ServiceController.GetServices().Where(svc => svc.ServiceHandle.DangerousGetHandle() == myservice.ServiceHandle)
, но, похоже, он получил другой дескриптор, поэтому они не сравнимы.
Существует специальная программа под названием SRVANY.exe
, которая, похоже, способна это сделать. Вопрос только в том, как это происходит.