【发布时间】:2010-10-09 03:11:44
【问题描述】:
当我尝试启动在 Visual Studio 中创建的服务时,我收到以下错误:
System error 5 has occurred.
Access is denied.
我正在使用提升的权限运行命令行,所以这不是问题。有什么地方我可以看看发生了什么错误。
【问题讨论】:
标签: .net windows visual-studio error-handling windows-services
当我尝试启动在 Visual Studio 中创建的服务时,我收到以下错误:
System error 5 has occurred.
Access is denied.
我正在使用提升的权限运行命令行,所以这不是问题。有什么地方我可以看看发生了什么错误。
【问题讨论】:
标签: .net windows visual-studio error-handling windows-services
为了让它工作,我需要为我的服务项目的输出 bin\debug 文件夹添加权限。
本地服务帐户没有对输出 .exe 文件的权限,这就是发生错误的原因。
【讨论】:
有同样的问题。
通过在“本地系统帐户”下运行服务修复
【讨论】:
就我而言,解决方案就这么简单:以 administrator 身份运行命令提示符。
【讨论】:
我看到你已经解决了这个问题;但实际上,您通常不应该从项目的 bin 文件夹中运行服务 - 文件应该放在项目和配置文件独立的某个位置(例如,在程序文件下)。出于调试目的(当它将在 bin 文件夹中时),您可以检测它是否是 Main() 中的服务,如果它正在交互运行,则直接运行服务代码,而不是通常的服务启动设置。
您可以通过添加命令行参数来检测,也可以尝试检查Environment.UserInteractive。
【讨论】:
本地服务帐户似乎没有控制服务的特权。因此,在服务的登录属性中,将帐户类型更改为本地系统并允许服务与桌面交互。
另外,请确保您以管理员身份使用 instalutil 安装服务。
最后,当您想使用“net start [服务名称]”命令从命令提示符运行服务时,您必须以管理员身份运行命令提示符。
【讨论】:
我遇到了同样的问题,因为我的项目及其源代码位于启用了 NTFS 加密文件系统 (EFS) 的文件夹中。这是由于编译的程序集也被加密,并且运行我的服务的用户没有解密它们的权限。删除 EFS 是解决此问题的简单方法。它可以通过命令行使用 CIPHER.EXE 来完成,它是一个 Windows 工具。
【讨论】:
当我将服务从 vs05 迁移到 vs2010,同时从框架 2.0 迁移到框架 4.0 时,我遇到了同样的问题。我被拒绝访问。一旦更改回框架 2.0,它就会再次工作。 ?%¤#%&%& 问题是服务的初始化字符串不正确(?!)。字符串的开头和结尾都需要引号!
Before....path + service name" "/parameter=1 ' 这适用于框架 2.0
之后...."路径+服务名" "/parameter=1"
拒绝访问与问题无关。为什么不是“找不到路径”或“缺少参数”
【讨论】:
具有管理员权限的用户帐户会提示“您确定吗?”在未提示管理员帐户的情况下。我在使用 net stop netprofm 时遇到了这个问题。
要删除提示,请执行此操作。
控制面板,用户帐户,更改用户帐户控制设置,从不通知
这似乎为具有管理员权限的用户帐户提供了与管理员帐户相同的行为。
【讨论】:
从具有最高权限的任务计划程序运行它,它会工作。
【讨论】:
我在运行“sc config”来更改服务的 binPath 后遇到了这个问题。
对我有用的唯一修复是“sc删除”服务并重新安装。
此后一切顺利。
【讨论】:
不要简单地以不同的用户名或管理员启动服务。 (当然,除非您的服务实际上需要管理员权限!)这是一个安全漏洞,会造成糟糕的用户体验。
实际的问题是服务一开始没有被分配任何权限。
但是,必须注意的是,Microsoft 并没有完全让它们易于更改 - 服务权限类似于常规文件权限,但遗憾的是无法通过简单的右键单击来更改。然而,它们可以通过以下方式阅读:
sc.exe sdshow <service name>
并通过以下方式编写:
sc.exe sdset <service name> <permissions>
<service name> 是您的服务名称。<permissions> 是 SDDL 格式的权限。所以使用sdshow 获取权限,然后使用sdset 根据您的要求更新它们。 SDDL 是看似随机的字母的杂音,超出了本文的范围,更让人联想到 Unix 而不是 Windows。
简而言之,添加描述符 (A;;RPWP;;;WD) 将允许 (A) 每个人 (WD) 启动 (RP) 和停止 (WP) 命名服务。
【讨论】: