我有一个支持start as service和interactive模式的服务应用程序。我注册的服务作为NetworkService用户执行;交互模式作为计算机管理员运行(普通用户无权访问该程序)。
现在,某些资源(例如文件)仅供用户NetworkService
使用。我可以以某种方式告诉程序将代码作为NetworkService
运行,即使是由管理员启动的吗?
答案 0 :(得分:2)
现在,某些资源(例如文件)仅供用户NetworkService使用。我可以以某种方式告诉程序将代码作为NetworkService运行,即使是由管理员启动的吗?
NetworkService是一个低权限帐户。管理员是一个高权限的人。有一种情况,文件可用于NS,但没有管理员有点不寻常。虽然管理员有权冒充大多数帐户(WindowsIdentity.Impersonate()
,但看到Hans链接NS模拟问题),我会重新审视这种情况,并确保这确实是必要的。有问题的文件更有可能,而且应该ACL-ed不同,以便NS和本地管理员都可以访问该文件。
还要考虑将应用程序拆分为服务组件,始终作为服务运行,以及管理员可以调用的UI组件。让UI通过某些协议与服务进行通信,例如。通过LRPC或甚至HTTP的共享内存。
答案 1 :(得分:1)