В настоящее время я работаю над проектом на c #, в котором у меня есть служба, работающая в качестве LocalSystem, и пользовательское приложение (приложение трей), работающее для каждого вошедшего в систему пользователя.два.Изначально я настроил конечную точку, используя NetTcpBinding для службы, чтобы клиенты могли подключаться и указывать свое имя пользователя.После этого каждый клиент сам устанавливает конечную точку как таковую;net.tcp: // localhost: 5001 / UserApp / 'username' с включенным общим доступом к портам.Затем служба может подключиться к этой конечной точке, зная имя пользователя.
Хотя, пытаясь заставить программу нормально работать с UAC, я столкнулся с некоторыми проблемами.Совместное использование порта с включенным контролем учетных записей требует, чтобы пользователь был зарегистрирован в <'allowAccounts> SMSvcHost.exe.config, и хотя я добавил пользователя, я все еще получаю следующее сообщение об ошибке при попытке зарегистрировать конечную точку:
Конечной точке службы не удалось прослушать URI «net.tcp: // localhost: 5001 / UserApp / myuser», поскольку в доступе было отказано.Убедитесь, что текущему пользователю предоставлен доступ в соответствующем разделе allowAccounts SMSvcHost.exe.config.
Я также попытался переключиться на NetNamedPipeBinding, который хорошо работает при размещении пользовательского приложения.Но при использовании этой привязки служба не может получить доступ к конечным точкам, открытым клиентами.
Итак, в основном мне нужен способ, позволяющий одной службе предоставить конечную точку для нескольких пользовательских приложений на одном компьютере и службычтобы иметь возможность подключаться и отправлять обновления событий многопользовательским приложениям.
Есть предложения?