在应用程序中阻止系统关闭的最佳方法是什么
What is the best way to block system shutdown in an application
我对Windows API还很陌生。我正在想办法阻止系统关闭。我了解了SERVICE_CONTROL_PRESHUTDOWN
。还不完全是如何使用它,但我计划作为HandlerEx:做一些事情
DWORD WINAPI serviceHandler(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext)
{
switch (dwControl)
{
case SERVICE_CONTROL_PRESHUTDOWN:
while (1)
Sleep(1000);
}
return NO_ERROR;
}
但是A.)我不确定我是否读对了MSDN,并正确地实现了这个serviceHandler
。B.)有更好的方法吗。我基本上需要这个应用程序不允许关闭,除非它是通过按下电源按钮强制关闭的。
你不能像那样无限期地阻止系统关闭。参见HandlerEx
回调函数的备注:
SERVICE_CONTROL_SHUTDOWN控制代码只能由在关闭期间必须完全清理的服务,因为是可用于服务关闭的有限时间(约20秒)。在此时间到期后,无论服务关闭是否完成
最多20秒后,Windows将终止您的服务并继续关闭过程。
与其从代码中执行,不如部署几个组策略,如下所述:http://www.sevenforums.com/tutorials/128920-shut-down-computer-allow-prevent-users-groups.html
服务关闭的时间有限
20秒将帮助您阻止系统关闭。
电脑将执行类似"shutdown -t 20 -s
"的操作,然后快速输入Windows徽标+R\"shutdown -a
",上述命令将被取消。
它可以使用WinExec ()
或CreateProcess ()
来容易地实现。
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 在C++中向零方向近似的最佳方法
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 检测win32服务创建和删除的最佳方法
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 将线程中的数据存储到全局容器的最佳方法?
- 将一系列整数放入类的最佳方法是什么?
- 在派生类中使用基类的私有成员变量的最佳方法
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 比较两个节点坐标的最佳方法是什么?
- 在nodejs中使用本机代码的最佳方法是什么?
- 将 pybind11 绑定标记为已弃用的最佳方法
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- C++中变量混叠的最佳方法
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?