对于非管理员用户,localhost上的HttpAddUrl失败

Ash*_*ain 2 c++ http localhost winhttp

使用Windows HTTP API我在localhost上运行HTTP文件服务器.

这包括打电话HttpAddUrl(hRequestQueue, L"http://localhost:80/", NULL).

ERROR_ACCESS_DENIED除非用户以管理员身份运行应用程序,否则会失败.对于没有管理员权限的用户,我需要此功能.(无论如何,运行本地主机服务器的用户出了什么问题?这只是为了用户自己.)

我找到了一个针对Vista和XP修补程序,它似乎旨在解决这个问题,但是对于Windows 7没什么.这篇文章暗示它已经在Vista SP1中修复了,而且我有Windows 7 SP1并且它仍然是一个问题 - 修复程序没有成功到Windows 7?

我还能做些什么来让服务器为非管理员运行吗?

Ash*_*ain 8

回答我自己的问题,但找到了一种解决方法:IANA 端口号状态端口 49152-65535 用于动态/私有目的。 HttpAddUrl对于端口上的 localhost >= 49152 非管理员工作正常。


Lad*_*nka 5

这必须在系统级别配置,因为HTTP API使用http.sys(内核驱动程序).您可以使用以管理员权限执行的netsh.exe命令来授予对用户或应用程序的访问权限:

netsh http add urlacl url=http://localhost:80/ user=EVERYONE listen=yes delegate=no
Run Code Online (Sandbox Code Playgroud)