我创建了一个 Windows 服务,它在后台启动一个程序并确保 Web 应用程序不需要进一步安装。
当我在管理员帐户中启动此服务时,后台程序很好地启动并以用户名运行
http://i.imgur.com/oKQl9ym.png
一切都很完美,我可以在没有额外信息的情况下访问该网站等等。
当我注销并使用其他管理员登录时,它也可以使用。
但是,它在域的标准用户下不起作用。该进程确实启动,但不在 SYSTEM 下(但为空白用户名),因此后台程序启动,但没有使用正确的用户名。
为什么是这样?我需要更改什么,以便所有登录的标准用户也以管理员身份运行此服务?
我怀疑问题是这样的:SYSTEM 帐户只有本地(不是域或网络)身份验证,因此当普通用户登录时,它无法生成或命令任何已经以提升的权限运行的进程。这是一个功能,而不是错误 - 如果没有某种抽象层来阻止这些用户/来宾提升自己,就不能让用户或来宾帐户调用根级进程。
如果我可以提供另一种方法:创建一个具有适当权限的帐户来修改 Web 应用程序、管理它等,并在这些凭据下运行您的服务。锁定此帐户以供交互使用(没有人可以使用它登录)并确保它没有对整个系统的权限,只有网络应用程序和适当的资源,包括您的升级检查程序。
由于您正在检查 Web 应用程序的更新状态,而不是触发对用户登录的检查,请将其(再次使用上面的服务帐户)作为计划任务运行。这样,当用户访问站点时,您不需要运行特定的服务来启动升级后台任务,而是按照设定的时间表扫描和升级,已经在后台。