【问题标题】:Always run service as NetworkService, even in interactive mode始终将服务作为 NetworkService 运行,即使在交互模式下也是如此
【发布时间】:2017-11-07 00:50:26
【问题描述】:

我有一个支持作为服务启动和交互模式的服务应用程序。我注册的服务是作为NetworkService用户执行的;交互模式以计算机管理员身份运行(普通用户无权访问该程序)。

现在,某些资源(例如文件)仅对用户 NetworkService 可用。我能否以某种方式告诉程序以NetworkService 运行代码,即使由管理员启动?

【问题讨论】:

标签: c#


【解决方案1】:

现在,某些资源(例如文件)仅对用户 NetworkService 可用。我能否以某种方式告诉程序将代码作为 NetworkService 运行,即使是由管理员启动的?

NetworkService 是低权限帐户。管理员是高权限的。 NS 可以使用文件但管理员不能使用的情况有点不寻常。虽然管理员确实有权模拟大多数帐户(WindowsIdentity.Impersonate(),请参阅 Hans 链接了解 NS 模拟问题),但我会重新审视这种情况并确保这确实是必要的。更有可能的是,有问题的文件可以而且应该是不同的 ACL-ed,以便 NS 和本地管理员都可以访问该文件。

还可以考虑将应用程序拆分为一个始终作为服务运行的服务组件和一个管理员可以调用的 UI 组件。让 UI 通过某种协议与服务通信,例如。通过LRPC 或者甚至是 HTTP 的共享内存。

【讨论】:

    【解决方案2】:

    一般来说,如果您有管理员权限,您可以更改文件的权限。

    或在PsExec.exe 的帮助下将代码作为 NetworkService 帐户启动,如 here 所述

    【讨论】:

      猜你喜欢
      • 2023-03-02
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 2014-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多