检测到关闭并停止它

德卡特

新成员
已加入
2019年6月6日
留言内容
3
编程经验
1-3
好吧,尽管我已经有一些编码经验,但是我刚接触C#,却找不到任何文档,这可能是因为它相对不寻常。我想打,当一个复选框被选中它检测如果PC将被关闭并停止它PROGRAMM,所以你可以把它叫做"anti-shutdown"。如果有人可以帮助我,或者告诉我C#是否适合该语言,那将是完美的。
 

羊皮

知名会员
已加入
2018年9月5日
留言内容
1,982
编程经验
10+
我将首先截取负责 会话当前正在关闭 并附加一个事件处理程序,然后从该事件中,我将检查您的小复选框是否已选中,如果已选中(true),则可以尝试 AbortSystemShutdownA 通过那个电话 拦截然后取消关机过程。您还可以在文档中找到有关以下内容的更多信息: 关机事件。这也可以使用 平沃. - Search Shutdown on the Pinvoke page. If you have a specific question regarding implementing any of these events, post up what you've tried and we can try to help you from there.

希望这可以帮助。
 

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,076
地点
挪威
编程经验
10+

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,605
地点
弗吉尼亚州切萨皮克
编程经验
10+
通常,作为Windows服务,您不想干扰Windows的正常启动和关闭。考虑一下操作系统和打补丁后需要重新启动才能使补丁生效的情况。通过防止重新启动,您可以防止将重要的安全修复程序应用于计算机。

出于好奇,您的服务所提供的功能多么重要,以至于它需要能够防止Windows关闭?
 

德卡特

新成员
已加入
2019年6月6日
留言内容
3
编程经验
1-3
通常,作为Windows服务,您不想干扰Windows的正常启动和关闭。考虑一下操作系统和打补丁后需要重新启动才能使补丁生效的情况。通过防止重新启动,您可以防止将重要的安全修复程序应用于计算机。

出于好奇,您的服务所提供的功能多么重要,以至于它需要能够防止Windows关闭?
好吧,我的网速真的很慢,所以下载更新等等总是要花很多时间,而且我经历了好几次,以至于当我过夜离开时,我会发现我的电脑在早上关闭,所以基本上我的窗户在关闭时就完全关闭了在某些时间点上,我想防止这种情况,所以我不必从头开始重新进行整个下载
 

德卡特

新成员
已加入
2019年6月6日
留言内容
3
编程经验
1-3
这是Windows服务吗?他们通常没有GUI,"checkbox".

也请阅读本文: Windows Vista(Windows)中的应用程序关闭更改微软文档

感谢您的文章,我现在要阅读它,但是为了回答您的问题,我将对其进行更详细的说明,我想创建一个程序,因此带有复选框的简单ui程序应该( (如果已选中此复选框)检测是否要关闭Windows,如果要关闭,请停止它。为什么?为此,请阅读我对跳伞运动员的回复
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,605
地点
弗吉尼亚州切萨皮克
编程经验
10+
好吧,我的网速真的很慢,所以下载更新等等总是要花很多时间,而且我经历了好几次,以至于当我过夜离开时,我会发现我的电脑在早上关闭,所以基本上我的窗户在关闭时就完全关闭了在某些时间点上,我想防止这种情况,所以我不必从头开始重新进行整个下载
首先,我将查看您已配置的电源设置。在当前的“电源设置”中打开一定的空闲时间后,您有可能选择进入睡眠或关闭状态。尝试切换到"High Performance". If you've left "High Performance"作为其默认设置,它不会关闭您的计算机。

您正在使用什么下载?大多数现代的网络浏览器都知道如何从中断的下载中恢复-除非您碰巧以隐身模式运行。如果您以隐身模式运行,是的,应该忘记任何特定Web会话的状态。

我知道的所有BitTorrent客户端都可以从已中断的下载中恢复,因为这就是该协议的工作方式。应该从Internet上获取的任何文件中重建文件。您的计算机上已经存在的任何位都不需要重新下载。
 

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,076
地点
挪威
编程经验
10+
我想创建一个程序,所以有一个带有复选框的简单ui
我现在已将该线程移至Windows Forms论坛,Windows Service似乎不适合于此。我还将线程标题更改为描述性的内容。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,566
地点
悉尼,澳大利亚
编程经验
10+
A Windows Forms form has a FormClosing event and the e.CloseReason property will tell you why it happened, including a Windows shutdown. Cancel closing the form and you prevent Windows shutting down.
 

羊皮

知名会员
已加入
2018年9月5日
留言内容
1,982
编程经验
10+
The e.Cancel = true; will prevent your application from closing, but if someone tries to log off, only your application will prevent windows from logging off. You should note; it won't stop the closure of other applications on the system while the logoff is commencing. When windows shuts down, it collects a list of running applications in need of being closed before the log off can commence. Depending on the order of the opened applications being cued for closure, whatever applications are cued before yours, will also be closed regardless of your applications current state, and windows will only halt when your application is being processed. Any applications cued after your application will also not be shut down. However, a user can still persist to ignore your applications state and force the log off to continue by way of interacting with log off screen. See pic :

session-not-logging-off.jpg


我认为完全防止关机的唯一方法是(可能的话)更改一些安全策略,以防止用户组具有手动注销的能力。这不是我以前尝试过的东西,但是有可能。 根据这个, there is an option to remove the button from the Start menu. So in theory, you could include using Microsoft.GroupPolicy; and get to work on rewriting the registry values. But yuck, and I would highly recommend you backup your registry in full before playing with a major part of the operating system if you're on a development machine or not. The Microsoft.GroupPolicy will give you much more control over a users ability to log off VIA the UI, but if they know how to reboot and log off via cmd, you may have a new problem on your hands to prevent that. Some here might argue that group policy might not be the best way to go about it.

〜添加缺少的链接
 
Last edited:
最佳 底部