簡體   English   中英

運行 Windows 服務時拒絕訪問

[英]Access Denied when running Windows Service

我使用 ASP.Net Core 3.x 和 C# 創建了一個 Windows 服務。 我在構建項目時從新的 Windows 服務模板開始。 當我從我的開發環境或控制台窗口運行它時,它運行良好。 當我將其安裝為 Windows 服務並嘗試啟動該服務時,出現“錯誤 5:訪問被拒絕”。 錯誤。

我嘗試了很多事情,我將在下面概述以消除錯誤,但似乎沒有任何效果,所以我下載了 Microsoft 提供的示例應用程序, 示例

相同的結果...當我從 Visual Studio 中運行示例應用程序時,它運行良好,作為服務運行時,我收到拒絕訪問錯誤。

  • 我在我是管理員的本地機器上運行所有這些。

  • 我最初嘗試使用默認的本地系統帳戶運行它; 收到拒絕訪問錯誤。 我將登錄身份更改為我的域帳戶,與我用來登錄本地計算機的相同,該計算機是本機的管理員; 得到相同的訪問被拒絕錯誤。

  • 我的帳戶具有作為服務運行的權限集。

  • 事件查看器只顯示一條消息“拒絕訪問”,沒有創建其他消息。

  • 我相信在執行 C# 代碼之前就發生了拒絕訪問錯誤。 讓我相信這是我在 Program.Main .... File.WriteAllText("C:\\\\temp\\\\ws.log", $"Test of Worker Service @ {DateTime.Now}. Content Root Path: {AppContext.BaseDirectory}"); . 我的帳戶可以完全訪問臨時文件夾。 當我從 Visual Studio 運行應用程序時會創建此文件,但當我將應用程序作為服務運行時不會創建它。

  • 我看過很多網站,包括這一個,這一個 不走運,我從這些站點嘗試的所有內容仍然會產生拒絕訪問錯誤。

我的想法已經用完了,希望這里有人可以為我提供答案。 謝謝!

我找到了解決方案,相信我覺得我真的很愚蠢!!!

當我將它安裝為服務時,我只將路徑放在“binPath”中。

sc create WindowsService1 binPath="C:\\temp"

一旦我實際將可執行文件添加到 binPath 參數,一切正常。

將其更改為sc create WindowsService1 binPath="C:\\temp\\WindowsService.exe"並且它起作用了。

我知道這是一個 Id10t 錯誤,但微軟確實應該為“sc”命令提供更好的消息傳遞。 像“找不到 binPath 參數中指定的文件”這樣的消息真的很有幫助。 本來可以為我節省大約 6 個小時的工作時間。

感謝大家對這個問題的評論和回復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM