运行 Windows 服务时拒绝访问
Access Denied when running Windows Service
我使用 ASP.Net 核心 3.x 和 C# 创建了一个 Windows 服务。我在构建项目时从新的 Windows 服务模板开始。当我从我的开发环境或控制台 运行 它 window 它 运行 没问题。当我将它安装为 Windows 服务并尝试启动该服务时,我得到了一个
"Error 5: Access is denied." 错误。
我尝试了很多方法,我将在下面概述以消除错误,但似乎没有任何效果所以我下载了 Microsoft 提供的示例应用程序,网址为 sample
相同的结果...当我 运行 来自 Visual Studio 的示例应用程序时,它 运行 没问题,当 运行 宁作为服务时,我获得了访问权限拒绝错误。
我运行在我的本地机器上执行所有这些操作,我是这台机器的管理员。
我最初尝试 运行 使用默认的本地系统帐户;得到拒绝访问错误。
我更改了登录为我的域帐户,与我用来登录本地机器的帐户相同,它是这台机器上的管理员;得到相同的拒绝访问错误。
我的帐户已将权限设置为 运行 作为一项服务。
事件查看器只显示一条消息"Access Denied",没有创建其他消息。
我相信在 C# 代码执行之前就发生了拒绝访问错误。让我相信这是我在 Program.Main... File.WriteAllText("C:\temp\ws.log", $"Test of Worker Service @ {DateTime.Now}. Content Root Path: {AppContext.BaseDirectory}");
的最顶部添加了一行。我的帐户对临时文件夹具有完全访问权限。当我 运行 来自 Visual Studio 的应用程序时创建此文件,但当我 运行 将应用程序作为服务时它不会创建。
我阅读了很多网站,包括这个 one and this one。运气不好,我在这些网站上尝试的所有操作仍然会产生拒绝访问错误。
我 运行 没有想法,希望这里有人能给我答案。谢谢!
我找到了解决办法,相信我,我觉得我真的很蠢!!!
当我将其作为服务安装时,我只将路径放在 "binPath"。
sc create WindowsService1 binPath="C:\temp"
.
一旦我将可执行文件实际添加到 binPath 参数中,一切正常。
将其更改为 sc create WindowsService1 binPath="C:\temp\WindowsService.exe"
并且有效。
我知道这是一个 Id10t 错误,但 Microsoft 确实应该为 "sc" 命令提供更好的消息传递。 "Cannot find file specified in the binPath parameter" 之类的消息会很有帮助。本来可以节省我大约 6 个小时的工作时间。
感谢大家审阅和回复此问题。
我使用 ASP.Net 核心 3.x 和 C# 创建了一个 Windows 服务。我在构建项目时从新的 Windows 服务模板开始。当我从我的开发环境或控制台 运行 它 window 它 运行 没问题。当我将它安装为 Windows 服务并尝试启动该服务时,我得到了一个 "Error 5: Access is denied." 错误。
我尝试了很多方法,我将在下面概述以消除错误,但似乎没有任何效果所以我下载了 Microsoft 提供的示例应用程序,网址为 sample
相同的结果...当我 运行 来自 Visual Studio 的示例应用程序时,它 运行 没问题,当 运行 宁作为服务时,我获得了访问权限拒绝错误。
我运行在我的本地机器上执行所有这些操作,我是这台机器的管理员。
我最初尝试 运行 使用默认的本地系统帐户;得到拒绝访问错误。 我更改了登录为我的域帐户,与我用来登录本地机器的帐户相同,它是这台机器上的管理员;得到相同的拒绝访问错误。
我的帐户已将权限设置为 运行 作为一项服务。
事件查看器只显示一条消息"Access Denied",没有创建其他消息。
我相信在 C# 代码执行之前就发生了拒绝访问错误。让我相信这是我在 Program.Main...
File.WriteAllText("C:\temp\ws.log", $"Test of Worker Service @ {DateTime.Now}. Content Root Path: {AppContext.BaseDirectory}");
的最顶部添加了一行。我的帐户对临时文件夹具有完全访问权限。当我 运行 来自 Visual Studio 的应用程序时创建此文件,但当我 运行 将应用程序作为服务时它不会创建。我阅读了很多网站,包括这个 one and this one。运气不好,我在这些网站上尝试的所有操作仍然会产生拒绝访问错误。
我 运行 没有想法,希望这里有人能给我答案。谢谢!
我找到了解决办法,相信我,我觉得我真的很蠢!!!
当我将其作为服务安装时,我只将路径放在 "binPath"。
sc create WindowsService1 binPath="C:\temp"
.
一旦我将可执行文件实际添加到 binPath 参数中,一切正常。
将其更改为 sc create WindowsService1 binPath="C:\temp\WindowsService.exe"
并且有效。
我知道这是一个 Id10t 错误,但 Microsoft 确实应该为 "sc" 命令提供更好的消息传递。 "Cannot find file specified in the binPath parameter" 之类的消息会很有帮助。本来可以节省我大约 6 个小时的工作时间。
感谢大家审阅和回复此问题。