如何防止 Windows 7 中的自动注销

如何防止 Windows 7 中的自动注销

我有一台运行 Windows 7 的远程计算机,通过关闭所有正在运行的应用程序,它会注销,然后自动再次登录。这种情况每天都会发生,但不是在特定时间,也不在特定任务上。

在此处输入图片描述

查看了上图所示的事件日志后,我发现了一些事件,其 ID 为 7001 和 7002,任务类别分别为 1101 和 1102。

我使用的是 Windows 7。我们其他 3 台具有相同配置的机器也遇到了这个问题。

为了解决这个问题,我在互联网上搜索并应用了有关客户体验的解决方案,如下链接中提到的:

客户体验改善计划的用户注销通知

有人能帮我追踪这个问题吗?我解决这个问题的方向正确吗?

编辑。

根据@TwistyImpersonator 的建议,我可以从详细的事件查看器中说出以下内容(图片附在最后):

在系统事件中:

以下事件总是在“Winlog”事件之后发生:

服务控制管理器-7036-无-Shell 硬件检测服务进入停止状态。

在 Application 活动中,以下事件也在同一时间范围内发生

警告-09.11.2017 18:19:29-User-Profile Service-1530-None-Windows 检测到您的注册表文件仍在被其他应用程序或服务使用。该文件将立即卸载。保存您的注册表文件的应用程序或服务此后可能无法正常运行。

详细信息 - 1 个用户注册表句柄从 \Registry\User\S-1-5-21-1277090162-4221482773-868009429-3552 泄露:进程 272 (\Device\HarddiskVolume2\Windows\System32\svchost.exe) 已打开密钥 \REGISTRY\USER\S-1-5-21-1277090162-4221482773-868009429-3552\Printers\DevModePerUser

信息-09.11.2017 18:19:29-桌面窗口管理器-9009-无-桌面窗口管理器已退出,代码为 (0x40010004)

系统和应用程序事件日志比较-1

系统和应用程序事件日志比较2

答案1

在评判这个答案之前,请知道它还在进行中。评论太多了,而且并没有真正专注于回答问题,而是找到了问题的原因。

我目前无法获得 win7 的副本来检查下面的代码在 win7 上是如何运行的,我会在下周这样做,或者你只需​​告诉我你的体验...

---- 答案草稿 ----

虽然解决您的问题的最佳方法是找到原因,但我将回答问题标题:

“如何防止 Windows 7 自动注销”

为了捕获和防止注销,我发现的当前方法是捕获 C# 中 Windows 窗体的“formclosing”事件并检查 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;

            }
        }
    }
}

在此处下载已编译的二进制文件: 阻止注销表单

在当前设计下,您需要启动此程序并使其保持运行,直到自动注销实际发生。进一步的重新定义可以使其与 Tasktray 应用程序或类似程序一样运行。

相关内容