Windows 服务:在作为 LocalSystem 运行时侦听套接字

2024-01-08

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

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

UPDATE:看来关闭防火墙的建议是正确的——在 Windows 防火墙中添加例外后我可以获得连接。我想我没有考虑防火墙,因为当您正常使用套接字运行应用程序时,您会收到一条提示,要求添加例外,而首次运行服务时不会发生这种情况。有没有比手动将规则添加到防火墙更好的方法来处理此问题? LocalSystem 是否有权向防火墙本身添加规则,或者我必须在安装过程中以某种方式执行此操作?


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 服务:在作为 LocalSystem 运行时侦听套接字 的相关文章

随机推荐

  • 使用 ThreadPoolExecutor 缩放 maxPoolSize;为什么池不动态增加其大小?

    作为初学者 我正在学习 java 中的线程和并发包 并且我已经阅读了有关 ThreadPoolExecutor 的文档来了解两者之间的差异getPoolSize getCorePoolSize getMaxPoolSize 并尝试在代码中实
  • 如何从变量中删除小数?

    如何在 shell 脚本中删除小数位 我将 MB 与字节相乘以获得以字节为单位的值 我需要删除小数位 ex 196 3 1024 1024 205835468 8 expected output 205835468 您没有提到您正在使用什么
  • 如何旋转然后朝那个方向移动?

    嘿 我目前正在尝试制作第一人称游戏 我能做的是使用函数 gluLookAt 使相机移动 并使用 glRotatef 旋转它 我想做的是旋转相机然后沿着我旋转的方向向前移动 但轴保持不变 尽管我旋转了相机 但相机侧向移动而不是向前移动 有人能
  • Chromium 是否支持通过 CDP 拦截 WebWorker 请求?

    我试图通过发送来拦截 WebWorker 请求Fetch enable在工作目标会话中 但得到了 Fetch enable wasn t found 来自 Chromium 的错误 这是否意味着 Chromium 不支持 WebWorker
  • 使用 HTTP/2 时,我们应该更喜欢 SSE + REST 而不是 websocket 吗?

    当使用websocket时 我们需要一个专用的连接来进行双向通信 如果我们使用 http 2 我们就有由服务器维护的第二个连接 在这种情况下 使用 websocket 似乎会带来不必要的开销 因为通过 SSE 和常规 http 请求 我们可
  • 在 Objective-C 中解压 gzip 数据流

    在 Objective C 中是否有一种简单 标准的方法来解压缩 gzip 原始数据缓冲区 我在苹果开发者文档中找不到任何有用的东西 如果没有 你能给我指点一下代码演练 一个库或者任何能让我的生活更轻松的东西吗 我不怕写C代码 cocoad
  • 将 .net 2.0 解决方案转换为 .net 3.5 的陷阱

    我们正在将包含 20 多个项目的解决方案从 net 2 0 迁移到 3 5 同时从 Visual Studio 2005 迁移到 2008 我们还同时从 MS Entlib 2 0 切换到 4 0 有什么理由不让 Visual Studio
  • Unity 截图错误:也捕获了编辑器

    我正在尝试创建一些屏幕截图 但是ScreenCapture CaptureScreenshot实际上捕获了整个编辑器 而不仅仅是游戏视图 public class ScreenShotTaker MonoBehaviour public K
  • 根据pandas中的条件获取列名称

    I have a dataframe as below 如果特定行的列在该列中包含 1 我想获取该列的名称 Use DataFrame dot http pandas pydata org pandas docs stable refere
  • Butterknife 具有适用于手机和平板电脑的不同布局

    我在当前项目中使用 Butterknife 库时遇到一些问题 我目前正在针对手机和平板电脑优化该项目 例如 两者的布局文件有时会存在细微差别 布局 layout example xml
  • PHP:是否可以使用特征静态方法中的特征获取类的名称?

    使用特征的类的名称可以从属于该特征的静态方法中确定吗 例如 trait SomeAbility public static function theClass return
  • 包对象什么时候初始化?

    如果我定义一个包对象 package com something else package object more val time System currentTimeMillis other stuff 然后将其导入源代码中的某个位置
  • 在哪里可以找到 xampp 1.8.2(PHP 5.4.X) 的 bcompiler dll

    我在 Windows XP 上使用 xampp 1 8 2 bcompiler dll 不存在于 ext 目录中 我在 Windows XP 上安装了较旧的 xampp 1 7 1 并且 bcompiler dll 包含在 ext 目录中
  • 在ASP中打开并读取txt文件

    我想打开一个txt文件并从中读取代码 StreamReader reader File OpenText TrackData vehicle points txt TrckData是我的网络应用程序中的一个文件夹 但我收到此错误 找不到路径
  • 多少外部数据才算太多? (XML 或 JSON)

    我之前编写过纯 JavaScript 前端 并开始注意到在处理大量数据时性能会下降 我尝试过使用 xml 和 json 但在这两种情况下 浏览器需要处理的数据量很大 这提出了我的问题 多少算太多 你无法知道 不完全知道 也不总是知道 你可以
  • 如何在spring xml配置中注入环境变量?

    AWS 谈论System getProperty JDBC CONNECTION STRING in http docs aws amazon com elasticbeanstalk latest dg create deploy Jav
  • 检查 url WebView Swift 是否有效

    我想在将视频网址嵌入到我的 webView 之前检查它是否有效 因为如果用户输入无法解析或包含视频的 url 那么 webView 将显示一个白框 if MyVariables link is valid let Code NSString
  • 如何为 Matplotlib 图形添加剪贴板支持?

    在 MATLAB 中 有一个非常方便的选项可以将当前图窗复制到剪贴板 尽管 Python numpy scipy matplotlib 是 MATLAB 的绝佳替代品 但遗憾的是缺少这样的选项 这个选项可以轻松添加到 Matplotlib
  • 如何让机器保持清醒状态?

    我有一个用 Java 编写的服务器软件 可以在 Windows 和 OS X 上运行 它不是在服务器上运行 而是在普通用户的 PC 上运行 类似于 torrent 客户端 我希望该软件发出信号到操作系统以在机器处于活动状态时保持机器唤醒 防
  • Windows 服务:在作为 LocalSystem 运行时侦听套接字

    我正在用 C 语言为 Windows 编写一个类似服务器的小型程序 使用 MinGW GCC 在 Windows 7 上测试 该程序最终应该作为本地系统帐户的服务运行 我正在创建一个套接字 并使用 Windows 套接字bind liste