如何使用c#和windows服务创建无敌的windows应用程序

Posted

技术标签:

【中文标题】如何使用c#和windows服务创建无敌的windows应用程序【英文标题】:How to create invincible windows application using c# and windows services 【发布时间】:2011-06-11 12:43:20 【问题描述】:

我编写了一个在本地系统中运行的 Windows 窗体应用程序。我想让它无敌。我的意思是,我希望用户不能使用任务管理器或任何其他第三方应用程序终止进程。所以我写了一个 Windows 服务来在启动时运行这个应用程序。我以为我需要以 SYSTEM 身份运行 Windows 服务,但我该怎么做呢?

对于这种情况有什么特别的建议吗?

【问题讨论】:

听起来有点邪恶。如果你能说服我们你只会永远使用这些知识,你可能会更幸运地得到答案...... 开机在屏幕的左下角。 @drew R 你在开玩笑吗?我写了一个简单的硬币接受器应用程序供公众使用,而不是木马。 Windows 服务不能有 GUI,因此不可能将您的 Windows 窗体应用程序变成服务。见***.com/questions/53232/…。而且我确实相信“不可能”标签也适用于创建“无敌”应用程序。至少我希望如此。我无法杀死的用户模式程序的想法相当可怕。 @Jim 如果您再读一次,我告诉 Windows 窗体应用程序正在运行,而运行程序本身就是 Windows 服务(我使用进程类 2 来运行应用程序)。顺便说一句,很多杀毒程序都有内核,无法使用任务管理器或进程资源管理器杀死,例如NOD32等。 【参考方案1】:

我在工作中的应用程序也遇到了同样的问题,用户不应该关闭它。

您必须允许服务允许服务与桌面交互。 以下是安装服务时如何执行此操作的示例:http://www.codeproject.com/KB/install/cswindowsservicedesktop.aspx

现在您可以从服务中为当前登录的用户启动一个 GUI 应用程序。如果当前用户的进程仍在运行,您应该查看间隔,如果不重新启动它。

查看当前用户进程:http://www.codeproject.com/KB/cs/processownersid.aspx

【讨论】:

这可能是解决方案,但在我的情况下不是。我们这里还有一个问题。在这种情况下重新启动应用程序。这意味着该进程仍然可以被用户杀死。但我不想创建一个可以被用户杀死的进程。我想创建一个只被管理员杀死的进程。 GUI 应用程序是否关闭并不重要,如果您让服务完成所有操作。 GUI 应用程序只能用于向服务发送任务或从服务接收信息并将其显示给用户。您可以将其视为客户端-服务器应用程序。见:***.com/questions/1773046/… 请注意,这在 10 多年前就停止了支持。在任何现代版本的 Windows 上都没有这样的复选框。和you weren't supposed to do this even when the checkbox was there。这是一个仅用于测试目的的选项,开发人员滥用了它。像这样的答案是问题的一部分。 我正在使用 windows7,我看到复选框快速清除:) 你的想法都已经讨论过了。

以上是关于如何使用c#和windows服务创建无敌的windows应用程序的主要内容,如果未能解决你的问题,请参考以下文章

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

使用 C# 在 Windows 上检测防病毒软件 [关闭]

使用Topshelf创建Windows服务

如何使用 Selenium Web 驱动程序检测 Windows 身份验证提示?

如何使用C#创建WebService

C#创建安装一个Windows服务