我在這裏遇到問題。 所以我創建了一個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