Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当用户注销或关闭Windows时,如何延迟关闭应用程序?_C#_Windows_Dialog_System Shutdown - Fatal编程技术网

C# 当用户注销或关闭Windows时,如何延迟关闭应用程序?

C# 当用户注销或关闭Windows时,如何延迟关闭应用程序?,c#,windows,dialog,system-shutdown,C#,Windows,Dialog,System Shutdown,我正在编写一个从启动到关闭都在后台运行的应用程序,在某些情况下,我需要应用程序显示一个对话框,供用户选择是否继续关闭。此应用程序将仅在Windows上运行,但可能在2000年以后的任何版本上运行 虽然我确实对这个主题做了一些研究,但关于windows处理应用程序关闭()的方式的信息似乎有点分散。如果有人能举一个处理这个问题的最佳方法的例子,或者有关于这个主题的其他知识,我会非常感激(我对C#的经验很少) 谢谢 大熊猫 编辑:我知道阻止关闭被认为不是一种好的做法。这是此应用程序的关键业务需求 编辑

我正在编写一个从启动到关闭都在后台运行的应用程序,在某些情况下,我需要应用程序显示一个对话框,供用户选择是否继续关闭。此应用程序将仅在Windows上运行,但可能在2000年以后的任何版本上运行

虽然我确实对这个主题做了一些研究,但关于windows处理应用程序关闭()的方式的信息似乎有点分散。如果有人能举一个处理这个问题的最佳方法的例子,或者有关于这个主题的其他知识,我会非常感激(我对C#的经验很少)

谢谢

大熊猫

编辑:我知道阻止关闭被认为不是一种好的做法。这是此应用程序的关键业务需求


编辑:根据下面几位评论员的建议(重新设计以便不需要阻止关闭),我使用了NotifyIcon气球弹出窗口通知用户在应用程序发送数据时不要关闭。虽然这不太可能防止数据在本地计算机上滞留数周,但我觉得这是最佳实践和业务需求之间的一个很好的折衷。毕竟,如果用户愚蠢……那么,用户就是愚蠢的。

那么,你链接的MSDN文章清楚地解释了这一点:如果你的应用程序运行在Vista或Win7上,你不能阻止Windows关闭。提示用户不工作时,对话框将无法访问。你必须考虑一个应用程序来处理这个问题。

< P>我同意JAB。编程解决方案不能用于解决硬件故障。研究设置域权限以禁止关机。为了有效,您可能还需要限制硬件访问。您还可以通过热站点备份添加UPS或获取各种$$


这听起来确实像是基于事务的瘦客户机应用程序的工作。

实际上,根据文章,只要实现了处理关机的新API,就可以阻止关机。(或者至少我是这样读的。如果我错了,请告诉我。)不。我建议你试试这个。注意Force按钮。在某些情况下(不是大多数情况,而是在特定方法运行时),它绝对是业务关键型的。唯一的其他选项是请求用户重新启动计算机,以允许应用程序完成任务。这是因为,在计算机处于第二优先地位的行业中,它为客户提供服务,通常几周内都不会启动,但任务必须及时完成。您是否无法修改此方法,以便在启动关机时,应用程序将创建日志消息,并且无论执行什么操作都将回滚,如果它将某种类型的数据发送到其他地方,或者以其他方式以安全的方式失败?关闭有时是不可避免的。事实上,当运行应用程序的计算机因断电或电缆断开/电线拔出而断电时,会发生什么情况?应用程序显然无法阻止计算机在这种情况下关闭,即使操作系统API正确地支持它。您无法用程序可靠地强制执行业务关键型安全策略。系统管理员需要从用户帐户中删除SeShutdownPrivilege权限。请在serverfault上提问。com对不起,我在澄清自己方面肯定做得不好。这种情况与硬件故障完全无关。限制用户访问关闭绝对不是一个选项。鉴于此方法仍在运行,应用程序只需询问用户是否希望继续关闭。在大多数情况下,这不是一个问题。需要实现这一点的唯一原因是,如果用户不知道这个问题,他们将完全不知道他们的信息没有被发送。