Как убить всю навязчивую рекурсию в окне сообщений вручную, когда они открываются очень быстро и очень много в Windows

519
DMaster

Во-первых, я не спрашиваю о программных решениях, я просто публикую этот код, чтобы показать, как работает эта программа.

Я попробовал эту программу ниже (в виртуальной коробке):

#include <iostream> #include <string.h> #include <windows.h>  using namespace std;  int main(int argc, char **argv){  //program will create a command string that will be executed by the system console to call itself in another process (create another process): cmd = start program_name.exe string cmd = string("start ") + string(*argv);  //execute cmd: a temporary console will be opened, then execute cmd, finally the console will be closed system(cmd.c_str());  //display a message box (In fact, display many message boxes) which annoying user MessageBowW(0, L"Message box content", L"Message box title", MB_OK | MB_ICONEXCLAMATION | MB_TOPMOST);  //if the user pressed OK button in a message box, the message box will display again (by recursion) return main(argc, argv); } 

Скомпилированный исполняемый файл здесь

Многократно вызывая себя, эта программа открывает множество крайне неприятных сообщений и замедляет работу системы. Эта программа также не позволяет пользователю делать какие-либо манипуляции.

Я не могу сделать ничего лучше, чем перезагрузить мою систему.

У меня вопрос: если я случайно открою эту программу (открою ее двойным щелчком), как остановить все процессы без перезапуска Windows? Любая идея?

0
Диспетчер задач не работает, чтобы убить программу? Если это так, то вам может потребоваться выйти из системы. Karan 8 лет назад 0
Но выход из системы может привести к потере несохраненных данных DMaster 8 лет назад 0
Да, но когда у вас агрессивный процесс, занимающий все ресурсы путем открытия нескольких экземпляров, довольно скоро вы ничего не сможете сделать, так как система станет почти не реагировать. Если возможно, вы можете быстро закрыть приложения и ответить «Да» на запрос сохранения, а затем выйти из системы. Это, или попробуйте открыть диспетчер задач и каким-то образом убить процесс, но это может быть сложно, если он продолжает порождать новые окна, которые перекрывают или крадут фокус. Karan 8 лет назад 0
Кажется, Windows не предоставляет достаточно инструментов для безопасного управления, иногда пользователь должен сдаться. Где полезный инструмент, который поможет мне отменить эту аварию? DMaster 8 лет назад 0
То, что вы описали, - это в основном вилочная бомба, и даже в Linux она может быстро истощать ресурсы, если не используется `ulimit -u`. Для записи у меня был запущен Firefox и Word и Блокнот открыты с несохраненными файлами, и я смог выйти из системы. Затем Windows показала мне, что она убивает все экземпляры вашей программы, и когда все прошло, я быстро отменил выход из системы и смог продолжить свою работу без каких-либо проблем. Karan 8 лет назад 0
Я не знал этого раньше, спасибо! DMaster 8 лет назад 0

0 ответов на вопрос