Прежде чем судить об этом ответе, пожалуйста, знайте, что он находится в стадии разработки. Комментарии получили слишком много и не были действительно посвящены ответу на вопрос, но вместо этого нашли причину проблемы.
В настоящее время я не могу достать копию win7, чтобы проверить, как работает приведенный ниже код на win7, я сделаю это на следующей неделе, или вы просто скажите мне, что вы испытываете ...
---- ответ на проект ----
Хотя лучшее решение вашей проблемы - найти причину, я собираюсь ответить на вопросы:
«Как предотвратить автоматический выход из системы в Windows 7»
Чтобы захватить и предотвратить выход из системы, текущий способ, который я обнаружил, был перехватить событие «formclosing» формы окна в C # и проверить, является ли CloseReason CloseReason.WindowsShutDown. Это событие затем может быть «отклонено» кодом.
Это весь код:
using System; using System.Windows.Forms; using System.IO; namespace BlockLogoffForm { public partial class PreventLogoff : Form { public PreventLogoff() { InitializeComponent(); } private void PreventLogoff_FormClosing(object sender, FormClosingEventArgs e) { if (e.CloseReason.Equals(CloseReason.WindowsShutDown)) { File.AppendAllText("c:\\temp\\logofflog.txt","log off prevented at " + DateTime.Now); e.Cancel = true; } } } }
Загрузите скомпилированный бинарный файл здесь: BlockLogoffForm.exe
При текущем дизайне вам нужно будет запустить эту программу и оставить ее работающей, пока фактически не произойдет автоматический выход из системы. Дальнейшие переопределения могут привести к тому же самому запуску, что и к приложению Tasktray, или к аналогичному.