系统错误5启动.NET服务时拒绝访问

时间:2009-02-22 05:37:17

标签: .net windows visual-studio error-handling windows-services

当我尝试启动我在Visual Studio中创建的服务时,收到以下错误:

System error 5 has occurred.

Access is denied.

我正在使用提升的权限运行命令行,所以这不是那个问题。我有什么地方可以看看发生了什么错误。

11 个答案:

答案 0 :(得分:49)

为了让它工作,我需要为我的服务项目的输出bin \ debug文件夹添加权限。

本地服务帐户没有输出.exe文件的权限,这就是错误发生的原因。

答案 1 :(得分:17)

有同样的问题。

通过在“本地系统帐户”下运行服务来修复

enter image description here

答案 2 :(得分:12)

就我而言,解决方案就是这么简单:以管理员运行命令提示符。

答案 3 :(得分:10)

我看到你已经解决了这个问题;但实际上,你通常不应该从项目的bin文件夹运行服务 - 文件应该放在项目和配置文件独立的地方(例如,在程序文件下)。出于调试目的(当位于bin文件夹中时),您可以检测它是否是Main()中的服务,如果它是以交互方式运行,只需直接运行服务代码,而不是通常的服务启动设置。

您可以通过添加命令行参数进行检测,也可以尝试检查Environment.UserInteractive

答案 4 :(得分:2)

本地服务帐户似乎没有特权来控制服务。因此,在服务的LogOn属性中,将帐户类型更改为本地系统,并允许服务与桌面交互。

另外,请确保使用instalutil以管理员身份安装服务。

最后,如果要使用“net start [service name]”命令从命令提示符运行服务,则必须以管理员身份运行命令提示符。

答案 5 :(得分:1)

我遇到了同样的问题,因为我的项目及其源代码位于启用了NTFS的加密文件系统(EFS)的文件夹中。这是由编译的程序集加密引起的,并且运行我的服务的用户没有权限解密它们。删除EFS是一个简单的解决方案。它可以通过命令行使用CIPHER.EXE来完成,这是一个Windows工具。

答案 6 :(得分:0)

当我将服务从vs05迁移到vs2010时,我遇到了同样的问题,同时从框架2.0迁移到框架4.0。我拒绝访问Access。一旦改回框架2.0,它就会再次起作用。 ?%¤#%&%&问题是服务的初始化字符串不正确(?!)。字符串预期在开头和结尾处引用!

之前....路径+服务名称“”/参数= 1'这适用于框架2.0

之后......“路径+服务名称”“/参数= 1”

Access Denied与此问题无关。为什么不“找不到路径”或“缺少参数”

答案 7 :(得分:0)

Run it from Task Scheduler with highest privileges and it will work.

答案 8 :(得分:0)

在未提示管理员帐户的情况下,具有管理员权限的用户帐户将提示“您确定吗?”我有net stop netprofm这个问题。

要删除提示,请执行此操作。

控制面板,用户帐户,更改用户帐户控制设置,永不通知

这似乎为用户帐户提供了与管理员帐户相同的管理权限。

答案 9 :(得分:0)

在运行'sc config'来更改服务的binPath后,我遇到了这个问题。

对我有用的唯一解决方法是“删除”服务并重新安装。

之后事情很顺利。

答案 10 :(得分:0)

不要简单地以其他用户名或管理员身份启动服务。 (当然,除非您的服务实际上需要管理员权限!)这是一个安全漏洞,会带来不良的用户体验。

实际的问题是,该服务没有首先分配任何权限。

但是,必须指出的是,Microsoft并未完全使它们易于更改-服务权限类似于常规文件权限,但是不幸的是,不能通过简单的右键单击来更改它们。但是,可以通过以下方式读取它们:

sc.exe sdshow <service name>

并通过以下方式编写:

sc.exe sdset <service name> <permissions>
  • <service name>是您的服务名称。
  • <permissions>是SDDL格式的权限。

因此,请使用sdshow获取权限,然后使用sdset根据您的要求更新权限。 SDDL杂乱无章,看似随机的字母,超出了本文的讨论范围,比Windows更让人联想到Unix。 简而言之,添加描述符(A;;RPWP;;;WD)将允许(A)每个(WD)所有人(RP)和停止(WP)命名服务。