windows - 以除管理员身份之外的任何身份启动 Windows 服务会给出 'Access denied'

标签 windows service permission-denied

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

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

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

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

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

Permissions

Procmon list

Procmon details

最佳答案

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

该服务被输出到一个无意中加密的文件夹,因此当我将该服务复制到安装位置时,它仍保持加密状态。一旦我取消选中文件属性中的“加密内容以保护数据”复选框,该服务就会为所有用户正确启动。

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

关于windows - 以除管理员身份之外的任何身份启动 Windows 服务会给出 'Access denied',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22386774/

相关文章:

linux - Git 符号链接(symbolic link) - Windows 工作站 - Linux 服务器

c - 尝试在 Mac 终端中编译 hello world C 程序时出现 Permission Denied 错误

android - API 23 后警报管理器未按预期启动服务

service - 在服务的当前 Activity 中显示 toast

javascript - 如何以编程方式通过名称获取 Angular 服务

ubuntu - 无法启动 Vagrant (Ubuntu 16.04)

git - Github 操作中的 git remote add 权限被拒绝

windows - Azure 移动应用程序应用程序 key

java - 如何强制Java只写换行符?我收到 CRLF 与\n

windows - 尝试在 Windows 上使用 svn2git 时出错