始终以NetworkService运行服务,即使在交互模式下也是如此

时间:2017-06-06 06:17:09

标签: c#

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

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

2 个答案:

答案 0 :(得分:2)

  

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

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

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

答案 1 :(得分:1)

一般情况下,如果您拥有管理员权限,则可以更改文件权限。

或者使用PsExec.exe

所述的帮助here将代码作为NetworkService帐户启动