强制 c# windows 服务始终作为系统运行,并且不允许非特权用户停止/启动

Posted

技术标签:

【中文标题】强制 c# windows 服务始终作为系统运行,并且不允许非特权用户停止/启动【英文标题】:Force c# windows service to always run as system and not allow stop/start by non-privileged users 【发布时间】:2021-04-08 00:35:32 【问题描述】:

我是构建 Windows 服务的新手,作为一项学习练习,我正在遵循 Visual Studio 提供的模板来编写一个服务,该服务将阻止特定用户使用 CD 驱动器并将尝试记录到文件中。我无法找到允许我 1) 阻止非提升用户停止或重新启动服务和 2) 强制服务以 NT Authority\SYSTEM 运行并阻止用户更改“运行为”的文档'用户。任何提示将不胜感激。我已经搜索了互联网和堆栈溢出,但也许我只是对服务或相关术语知之甚少,无法找到我需要的东西。提前致谢!

【问题讨论】:

这取决于操作系统及其安全级别。 这是专门为 windows 10 专业版或企业版 【参考方案1】:

我重写了我的项目以利用 PSService JFLarvoire 的 PowerShell 脚本(可在 GitHub 上获得),它动态生成可自定义的 Windows 服务可执行文件。您可以重新配置 PSService 以指定该服务应以哪个用户身份运行,但默认情况下它以完美满足我需求的 SYSTEM 帐户运行。进一步的研究还表明,非特权 Windows 用户可以启动系统服务,但不能停止它们,除非他们被授予这样做的权限。

【讨论】:

以上是关于强制 c# windows 服务始终作为系统运行,并且不允许非特权用户停止/启动的主要内容,如果未能解决你的问题,请参考以下文章

将 C# 控制台应用程序作为 Windows 服务运行

如何用C#编程操作Windows系统服务

如何强制 C# .net 应用程序在 Windows 中仅运行一个实例? [复制]

C#如何强制等待连接到 WCF 服务

如何在调试模式下运行 wildfly,作为 Windows 上的服务?

Windows下MySql错误代码1045的解决方法