启动Windows服务,但管理员提供的访问被拒绝'

时间:2014-03-13 17:46:09

标签: windows service permission-denied

我正在安装我正在开发的Windows服务。它设置为作为网络服务运行。当我尝试启动此服务时,我收到一个消息框,告诉我访问被拒绝。但是,网络服务确实可以访问可执行文件及其包含的整个目录。

我也尝试将服务作为本地服务和本地系统启动,但我收到同样的错误。我没有收到任何错误,如果我以管理员身份运行服务(也是我登录的帐户),服务会按预期启动。

我查看了事件日志,但只有一个条目包含相同的信息:'访问被拒绝。'

我检查了procmon以查看它试图访问的内容,令我惊讶的是,当服务管理器尝试打开我的可执行文件时,访问被拒绝;即使它有完全访问权限。

为什么拒绝访问可执行文件?下面是可执行文件权限的截图,我尝试启动服务时procmon的输出,以及第一个给ACCESS DENIED的CreateFile的详细信息。

Permissions

Procmon list

Procmon details

1 个答案:

答案 0 :(得分:3)

问题实际上是服务可执行文件是用EFS加密的;错误代码(访问被拒绝)让我失望。

该服务正在输出到无意中加密的文件夹,因此当我将服务复制到安装位置时,它仍然是加密的。取消选中文件属性中的“加密内容以保护数据”复选框后,所有用户都正确启动了该服务。

这解释了为什么服务只会以当前用户身份启动,而不是任何系统用户,包括特权“本地系统”帐户。