错误5:启动Windows服务时拒绝访问

Kri*_*s-I 92 .net c# wcf windows-services

当我尝试启动我在C#中创建的Windows服务时,我收到此错误:

替代文字

我的代码到目前为止:

private ServiceHost host = null;

public RightAccessHost()
{
    InitializeComponent();
}

protected override void OnStart(string[] args)
{
    host = new ServiceHost(typeof(RightAccessWcf));
    host.Open();
}

protected override void OnStop()
{
    if (host != null)
        host.Close();
    host = null;
}
Run Code Online (Sandbox Code Playgroud)

更新#1

我通过授予帐户NETWORK SERVICE的权限解决了上述问题,但现在我有另一个问题:

替代文字

更新#2

服务无法启动.System.InvalidOperationException:服务'RightAccessManagementWcf.RightAccessWcf'具有零应用程序(非基础结构)端点.这可能是因为没有为您的应用程序找到配置文件,或者因为在配置文件中找不到与服务名称匹配的服务元素,或者因为在service元素中没有定义端点.System.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel. System.ServiceModel.Channels.CommunicationObject中的TimeSpan超时).

Jus*_*les 112

我意识到这篇文章已经过时了,但是没有明显的解决方案,我只是想介绍一下如何解决这个问题.

Error 5: Access Denied通过将输出目录的权限授予NETWORK SERVICE帐户来解决第一个错误.

Started and then stopped当出现故障时,第二个错误似乎是一个通用消息.检查事件查看器(特别是"Windows日志>应用程序")以获取真实的错误消息.

在我的例子中,它是app.config中糟糕的服务配置设置.

  • 我通过使用资源管理器导航到该文件夹​​,右键单击,属性,安全性,然后在用户名列表中为NETWORK SERVICE帐户分配正确的权限来修改权限. (7认同)
  • 我添加LOCAL SERVICE"和"NETWORK SERVICE"到我的bin\Debug文件夹并且工作,谢谢! (4认同)
  • 只是给人们留言:如果更改权限无法解决您的问题,请务必检查事件查看器是否有错误.我有一个完全不相关的SQL错误,阻止服务启动但仍然给了我"错误5:访问被拒绝." 错误. (3认同)

Mik*_*erk 24

计算机 - >管理 - >服务 - > [您的服务]属性.然后是带有帐户信息的选项卡.使用这些设置进行播放,例如使用管理员帐户运行服务.

这样做对我来说.

编辑:什么也可以,问题是,大多数服务都运行作为LOCAL SERVICELOCAL SYSTEM账户.现在,当您C:/my-admin-dir/service.exe使用这些帐户运行但不允许他们执行该目录中的任何内容时,您将获得error 5.因此,找到服务的可执行文件,RMB目录 - >属性 - >安全性,并确保运行该服务的帐户位于可以完全控制目录的用户列表中.


cmc*_*nty 18

这对我有用.

  1. 右键单击包含服务可执行文件的顶级文件夹.转到"属性"
  2. 转到"安全"选项卡
  3. 点击"编辑"
  4. 点击"添加"
  5. 输入名称"SYSTEM",单击"确定"
  6. 突出显示SYSTEM用户,然后单击"完全控制"旁边的"允许"复选框
  7. 单击确定两次

  • "SYSTEM"对我来说不起作用,我只是赌博并尝试"服务" - 这就是诀窍. (9认同)
  • 添加"SERVICE"并给它"完全控制"对我有用 - Windows 10. (4认同)

小智 13

我也得到了相同的错误,它通过右键单击服务>属性>登录>登录解决:本地系统帐户.


Aag*_*age 8

确保Path to executable指向实际可执行文件(右键单击服务 - >属性 - >常规选项卡).通过powershell(和sc.exe),您可以安装服务而无需指向可执行文件......咳嗽.

  • 我不小心留下了一个文件夹而不是 .exe 文件。要解决此问题,我必须“sc删除servicenameXYZ”+重新启动服务器以完全删除该服务并重新安装正确的服务.exe文件。然后它开始像一个魅力。感谢这篇文章。 (2认同)

Jam*_*rth 7

我收到此错误是因为我误读了此处接受的答案:Create Windows service from executable

sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"
Run Code Online (Sandbox Code Playgroud)

对于<path_to_service_executable>,我使用的是可执行文件文件夹的路径,例如C:\Folder.

它需要是可执行文件的路径,例如C:\Folder\Executable.exe.


Joh*_*ohn 6

我得到了解决方案:

1. Go to local service window(where all services found)
2. Just right click on your service name: 
3. click on "properties" 
4. go to "log on" tab
5. select "local system account"
6. click "ok"
Run Code Online (Sandbox Code Playgroud)

现在您可以尝试启动该服务。

  • 我已经选择了“本地系统帐户”,但仍然收到消息。 (3认同)

小智 5

在我的情况下,没有检查以下内容。

在此处输入图片说明

  • 对于像我这样的其他读者:此屏幕截图是服务属性窗口的一部分!打开服务窗口(运行:services.msc)并从右键单击服务后出现的上下文菜单中选择属性! (2认同)

Shi*_*iji 1

您的代码可能在不允许启动服务的用户的安全上下文中运行。

由于您使用的是 WCF,我猜测您处于网络服务的上下文中。

请参阅: http: //support.microsoft.com/kb/256299