我在这里遇到问题。 所以我创建了一个Windows服务,创建了安装脚本并将它注册到了Windows中。我使用的是我在同一脚本中创建的自定义帐户,并授予其使用碳库“登录为服务”的权利,以便能够从PowerShell中执行此操作(描述为here“设置或授予用户登录为A通过Powershell服务“)Windows服务无法启动“错误5:访问被拒绝”
在启动服务(手动和通过cmd),我得到”错误5:访问被拒绝“的错误。我不明白为什么,我甚至试图给帐户完整的权限,以整个C:\驱动器。
这是我如何创建用户
net user MyServiceAccount MyPassword /add /expires:never /passwordchg:no
以下是我授予它的权限登录作为服务
$Identity = "MyServiceAccount"
$privilege = "SeServiceLogonRight"
$CarbonDllPath = $PSScriptRoot + "\Carbon.dll"
[Reflection.Assembly]::LoadFile($CarbonDllPath)
[Carbon.Lsa]::GrantPrivileges($Identity, $privilege)
(作为服务登录的权限似乎工作,因为之前失败与关于该问题的错误) 我已阅读了一大堆关于该主题的帖子,但无法解决问题。 所以,我的问题是:什么可能导致访问被拒绝错误?
更新
试过在管理员帐户(登录为...)运行它,它做同样的事情 - 访问被拒绝。 EventLog除了“由于以下错误导致MonitoringService服务未能启动:Access被拒绝”之外没有任何内容。系统事件日志中的消息。
可能访问被拒绝的错误是与一些注册表项而不是文件相比引发的。 – Vesper
@Vesper有没有办法找出答案?我的意思是,我怎样才能知道它可能会失败的注册表键? –
您的应用程序应该提供日志和/或其他调试信息,以便它不会在堆栈跟踪之上出现原始0xC0000005。如果你在控制它的代码,确保你有任何外部操作的尝试,以便它不会最终陷入恐慌。如果没有,请使用Sysinternals Process Monitor,regmon和filemon工具记录注册表活动并调试应用程序。 – Vesper