gpt4 book ai didi

c - Windows 服务 : Listening on socket while running as LocalSystem

转载 作者:太空狗 更新时间:2023-10-29 15:59:16 25 4
gpt4 key购买 nike

我正在用 C 为 Windows 编写一个类似服务器的小程序(使用 MinGW/GCC,在 Windows 7 上测试),它最终应该作为使用 LocalSystem 帐户的服务运行。我正在创建一个套接字,并使用 Windows 套接字 bind()listen()accept() 来监听传入连接。如果我从命令行运行应用程序(即不是作为服务,而是作为普通用户),我从外部 IP 连接到它没有问题。但是,如果我使用 LocalSystem 帐户将程序作为服务运行,我只能从我自己的 PC 连接到该服务,使用 127.0.0.1 或我的本地地址 192.168.1.80 (我在一个小型本地网络中的路由器后面)。使用我的本地地址的外部 IP 或同一本地网络中的其他 PC 现在都无法连接,即使没有作为服务运行也没有问题。

现在,我听说当作为 LocalSystem 或 LocalService 运行时,网络处理方式不同甚至无法访问(?),或者服务无法同时访问桌面和网络(注意:我的服务不是交互式的)时间出于安全考虑。本质上,我需要找出问题所在/如何监听服务中的连接。作为 NetworkService 运行是否与作为 LocalSystem 运行相同,但具有网络访问权限?肯定有服务器可以作为后台服务运行,那么他们是怎么做到的呢?

更新: 关闭防火墙的建议似乎是正确的——在 Windows 防火墙中添加异常(exception)后我可以连接。我想我没有考虑防火墙,因为当你正常使用套接字运行应用程序时,你会得到一个提示,要求添加一个异常(exception),这在第一次运行服务时不会发生。有没有比手动将规则添加到防火墙更好的方法来处理这个问题? LocalSystem 是否有权向防火墙本身添加规则,或者我是否必须在安装期间以某种方式执行此操作?

最佳答案

LocalSystem 和 LocalService 帐户已限制网络登录权限,但据我所知它不应该影响套接字连接。

但是,Windows 防火墙将处于事件状态,如果您将可执行文件移动到新目录以作为服务安装,它可能不再符合您为测试制定的规则。

关于c - Windows 服务 : Listening on socket while running as LocalSystem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10942916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com