2010-04-01 3 views
4

Я пытаюсь запустить собственный веб-сервер на основе WinHTTP на компьютере под управлением Windows Server 2008.Разрешения HttpAddUrl

Я прохожу "HTTP: // *: 22222 /" в HttpAddUrl

Когда я начинаю свой исполняемый файл в качестве администратора или LocalSystem все работает отлично. Однако, если я попытаюсь запустить его как NetworkService, чтобы свести к минимуму риски безопасности (поскольку нет законных причин для использования приложения правами администратора), функция не работает с кодом ошибки «Доступ запрещен».

Я не знал о том, что NetworkService имеет какие-либо ограничения на какие порты и интерфейсы он может прослушивать.

Есть ли способ настроить разрешения таким образом, чтобы я мог запустить приложение в учетной записи NetworkService и подключиться к нему с других интернет-хостов?

ответ

5

Вы должны быть администратором, чтобы добавлять URL-адреса в сопоставления URL http.sys. Сетевая служба не входит в группу администратора, но члены группы администраторов и системная учетная запись являются членами.

IIS обходит это, имея один процесс inetinfo.exe, который работает как SYSTEM и устанавливает сопоставления URL-адресов для рабочих процессов (w3wp.exe), которые выполняются как сетевая служба.

Надеюсь, что разъясняет оттенки.

+0

К тому же, возможно, вам захочется, чтобы ваш установщик добавил отображение при установке службы или предоставил автономный инструмент настройки, который делает то же самое. Я столкнулся с этой проблемой ранее на этой неделе и (после некоторых поисковых запросов) нашел это автономное приложение, которое создало для меня сопоставление: http://urlreservation.codeplex.com/ –

+1

Этот инструмент был именно тем, что мне нужно! Я заглянул в исходный код, похоже, что те, кто хочет создать эти сопоставления из своего кода, должны использовать функцию Google HttpSetServiceConfiguration – Ghostrider