由服务 运行 作为本地系统启动的应用的权限

Permissions for apps started by services running as Local System

我们有一个遗留服务 运行,它负责监视另一个服务,但也会启动一个控制台应用程序(用 C 编写),该应用程序在后台继续 运行。如果我们从 cmd 提示符启动控制台应用程序,它工作正常。如果我们也在网络服务帐户下启动该服务,它也可以正常启动控制台应用程序,但在那种情况下它无法启动其他服务。

因此,由于该服务必须监视 (start/stop) 另一个服务,因此它必须在本地系统帐户下启动以获得必要的权限 - 但问题是由此服务启动的控制台应用程序无法启动从 appdata 文件夹中读取其配置。

我可以看到控制台应用程序将 APPDATA 文件夹获取为 C:\Windows\System32\config\systemprofile\AppData\Roaming,但该应用程序指出找不到此文件夹中的配置文件,因此它自行关闭。当我从普通用户帐户启动它时,它会转到该用户的 appdata 文件夹并正常工作。我什至尝试为 systemprofile\AppData\Roaming 文件夹中的文件夹授予 Users 组额外权限(这没有意义,因为应用程序是 运行 作为本地系统),但它没有帮不上忙

  1. 让此控制台应用程序从本地系统 appdata 文件夹读取设置的最佳方法是什么?

  2. 或者,是否可以授予此单一服务启动其他服务的权限,而无需将其作为本地系统启动?

If we start the console application from the cmd prompt, it works fine.

这意味着您登录的帐户具有足够的权限来执行您需要的所有操作。在服务的 "Log On" 选项卡上指定该帐户,您就可以开始了!