Joh*_*n T 14

出于安全原因的管理权限。

只有具有管理权限的进程才能打开可由 CreateService 和 LockServiceDatabase 函数使用的 SCM(服务控制管理器)句柄(有关详细信息,请参阅MSDN 文章)。在本文中,您将看到,对于创建服务的权限,您需要访问权限SC_MANAGER_CREATE_SERVICE (0x0002),该权限包含在通用访问权限中GENERIC_WRITE。如果您再往下看一点,您会看到只有管​​理员才能通过 访问此内容SC_MANAGER_ALL_ACCESS。使用 InstallUtil.exe 安装 .NET Windows 服务也是如此,因为 InstallUtil 调用本机CreateService函数。

安装服务的应用程序将通过两种方法之一。这听起来像防止安全问题非常合乎逻辑的设计,为解释在这里

实际上,Windows 中的这种设计是有道理的。这是出于安全考虑的结果。Windows 服务通常运行在高权限帐户下,如果普通帐户可以安装未知服务,则恶意用户很容易提升其权限。例如,他可以使用 installutil.exe 安装在本地服务帐户下运行的黑客服务。然后,当服务运行时,整个机器将被具有普通用户帐户的黑客控制。这确实是一个安全漏洞。所以 Windows 只允许管理员安装服务。