我正在安装我正在开发的Windows服务。它设置为作为网络服务运行。当我尝试启动此服务时,我收到一个消息框,告诉我访问被拒绝。但是,网络服务确实可以访问可执行文件及其包含的整个目录。
我也尝试将服务作为本地服务和本地系统启动,但我收到同样的错误。我没有收到任何错误,如果我以管理员身份运行服务(也是我登录的帐户),服务会按预期启动。
我查看了事件日志,但只有一个条目包含相同的信息:'访问被拒绝。'
我检查了procmon以查看它试图访问的内容,令我惊讶的是,当服务管理器尝试打开我的可执行文件时,访问被拒绝;即使它有完全访问权限。
为什么拒绝访问可执行文件?下面是可执行文件权限的截图,我尝试启动服务时procmon的输出,以及第一个给ACCESS DENIED的CreateFile的详细信息。
答案 0 :(得分:3)
问题实际上是服务可执行文件是用EFS加密的;错误代码(访问被拒绝)让我失望。
该服务正在输出到无意中加密的文件夹,因此当我将服务复制到安装位置时,它仍然是加密的。取消选中文件属性中的“加密内容以保护数据”复选框后,所有用户都正确启动了该服务。
这解释了为什么服务只会以当前用户身份启动,而不是任何系统用户,包括特权“本地系统”帐户。