【问题标题】:Can an application started by a windows service connect to internet由windows服务启动的应用程序可以连接到互联网吗
【发布时间】:2018-12-19 04:30:36
【问题描述】:

我有一个 Python 脚本,其目的是确保不断从 Internet 下载数据的特定应用程序始终保持运行。如果应用程序崩溃,脚本会将其恢复。

由于系统是windows,所以我把脚本修改成了service,这样即使windows自己重启,即使用户没有登录,service也会保证应用启动。

该服务是使用具有管理员权限的帐户安装的。系统似乎工作正常,只是成功启动的应用程序没有连接到互联网(应用程序写入日志文件,因此我们可以确定它启动正常)。如果用户更改为网络服务或本地系统,将面临同样的问题

所以我想知道是否需要任何权限来帮助它连接到互联网(或者这根本不可能)。

【问题讨论】:

  • 用户帐户不仅仅是权限。它们也与环境有关。如果您从在系统帐户下运行的服务启动应用程序 X,应用程序将使用该帐户的预定义位置查找配置数据。
  • @IInspectable,我是 python 的 os.chdir,用于在启动应用程序之前将服务的工作目录更改为适当的位置。这似乎工作正常。否则,应用程序要么没有启动,要么在崩溃后立即崩溃。所以这不应该是问题。
  • 当前工作目录与应用程序的启动能力无关。一个表现良好的应用程序无论如何都不依赖于当前的工作目录。它有更强大的选项来查询其环境,例如SHGetKnownFolderPath。您应该调查应用程序 X 存储其持久数据的位置(例如注册表、当前配置文件的已知文件夹位置等)。
  • @IInspectable,该应用程序也是由我所在的团队创建的。他们确实从当前目录中获取配置文件。它正在成功获取配置文件。否则不会启动成功
  • 如果您控制了此应用程序的代码,为什么不修复导致应用程序崩溃的错误?无论如何,您必须在问题中提供更多信息,最好是minimal reproducible example

标签: python windows service windows-services windows-authentication


【解决方案1】:

您可能需要在服务的登录选项卡(Services.msc 控制面板应用程序的)上指定一个可以正常运行应用程序的帐户:

Windows Services FAQ 中的其他详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多