我一直在做一个付款/现金登记申请。 我们需要通过使用Alt + Esc,Ctrl + Alt + Del或Alt + Tab等组合来防止用户退出应用程序,我们将为退出提供单独的自定义热键。 该应用程序将是全屏幕,没有任何closuresbutton。 我已经做了全屏没有交叉button的部分,但坚持禁用低系统级别的热键。 我如何在C#中做到这一点? 任何帮助或替代方法(即设置用户组权限,以防止星形菜单/任务pipe理器或任何其他替代scheme来实现目标)赞赏。
编辑:我们正在使用WinForms。 该应用程序将在Windows XP / Vista / 7中运行。
基本的正则expression式为16位数字
Windows应用程序或本地Web应用程序
EventLog.EntryWritten事件处理来自过去的事件
如何在.NET中执行应用程序内通信
提前C#string比较
没有直接的方法来摆脱Windows的标准行为。 Windows用户必须有可能杀死应用程序。 如果应用程序不服从,系统将强制终止应用程序。
然而,有一些技巧,经常被病毒作者使用,这里有一些(不是广泛的):
禁止所有的系统热键是相对微不足道的,但Ctrl-Alt-Del不在其中。 用示例应用程序查找这个优秀的代码项目文章 。
建立一个DLL并注入其他对系统至关重要的进程。 容易做到,但要确保将应用程序从.NET移植到独立的C ++或其他语言,您不希望系统进程依赖于您加载的.NET版本。
代替dll的建议,你可以创建一个类似于这样的库的外壳扩展的东西,它允许你继续使用.NET。 这并不意味着这种事情,但它迫使用户杀死explorer.exe来摆脱你的应用程序。
创建一个可以与桌面交互的服务。 通过正常手段来限制服务的权利,这基本上同样禁止用户通过你提到的方式杀死你的应用程序。
显然,你应该取消任何WM_CLOSE , WM_EXIT或WM_KILL消息,只需继续“生活”。
使用哨兵应用程序,这是大多数病毒扫描程序使用的:如果你杀死一个进程,哨兵将重新启动它。 如果你杀了哨兵,它应该由主应用程序重新启动。 不好的行为,但工程。
但是,一般的建议:不要这样做。 如果需要的话,让你的用户潜在地杀死程序,否则将很难做任何维护。 唯一的“支持”方式是通过服务,在那里你可以允许特殊用户停止你的服务,它不能通过任务管理器停止。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。