У меня настроен набор служб NetTCP, которые работают под управлением службы Windows для производства, но я использую консольное приложение для их раскрутки в целях отладки. В Windows Vista я отключил UAC сразу, потому что это раздражало, однако я стараюсь оставить его включенным с 7, потому что он делает все, что я хочу, при этом очень тихо и не болтается.
Проблема, с которой я столкнулся, заключается в том, что при запуске VS в «стандартном» режиме (т. Е. Без запуска от имени администратора) службы не запускаются, потому что это говорит следующее:
"Конечной точке службы не удалось прослушать URI« net.tcp: // localhost: 60000 / [ServiceName] », так как доступ был запрещен. Убедитесь, что текущему пользователю предоставлен доступ в соответствующем разделе allowAccounts SMSvcHost.exe. .config. "
После небольшого исследования я смог найти этот файл и изменить его с помощью SID для моей учетной записи. Конфиг выглядит так:
<?xml version="1.0" encoding="utf-8"?><configuration>
<runtime>
<gcConcurrent enabled="false" />
<generatePublisherEvidence enabled="false" />
</runtime>
<system.serviceModel.activation>
<net.tcp listenBacklog="10" maxPendingConnections="100" maxPendingAccepts="2" receiveTimeout="00:00:10" teredoEnabled="false">
<allowAccounts>
<add securityIdentifier="S-1-5-21-XXXXXXX"/>
</allowAccounts>
</net.tcp>
<net.pipe maxPendingConnections="100" maxPendingAccepts="2" receiveTimeout="00:00:10">
<allowAccounts>
<add securityIdentifier="S-1-5-21-XXXXXXX"/>
</allowAccounts>
</net.pipe>
<diagnostics performanceCountersEnabled="true" />
</system.serviceModel.activation></configuration>
SID был получен из инструмента, входящего в комплект Sysinternals, и был проверен на соответствие ADSI Edit, поэтому я знаю, что он правильный. После перезагрузки службы по-прежнему не запускаются, и я стараюсь не заставлять их запускаться в административном режиме, потому что тогда вы больше не можете дважды щелкнуть файлы решения или проекта, что довольно раздражает.
У кого-нибудь есть идеи? Файл SMSvcHost.exe.config находится в папке «C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation», и хотя я использую x64, приложение скомпилировано в режиме x86. Я не уверен, в этом ли моя проблема?