0

我有一个问题,有时(我还没有设法找出一个模式,它只会每隔几次我尝试一次)如果我的应用程序使用更改 Windows 时间SetSystemTime(),Windows 会崩溃。

我的意思是弹出一条带有标题的消息,

微软Windows

和文字

应用程序没有响应。如果您等待,程序可能会再次响应。

...带有 [结束进程] 和 [取消] 按钮。

我已经等了很长时间(比如 20 分钟),但它并没有消失。

如果我结束进程或取消,任务栏消失,消息框消失。但是,如果我按键盘上的任何键,消息框就会回来。系统处于此状态时,我无法查看任务管理器。按 Ctrl-Alt-Delete 没有任何作用,Ctrl-Shift-Esc 也没有。

问题是,这种情况并非每次都会发生,它只会在写入过滤器 (UWF) 开启时发生。

这是我设置系统时间的代码:

    [StructLayout(LayoutKind.Sequential)]
    internal struct SystemTime
    {
        public short Year;
        public short Month;
        public short DayOfWeek;
        public short Day;
        public short Hour;
        public short Minute;
        public short Second;
        public short Milliseconds;
    }

    [DllImport("kernel32.dll", SetLastError = true)]
    internal static extern bool SetSystemTime(ref SystemTime st);

然后

        short year, month, day, hour, minute, second;
        SystemTime systemTime = new SystemTime();

        // code to populate all the components of the time.

        systemTime.Year = year;
        systemTime.Month = month;
        systemTime.Day = day;
        systemTime.Hour = hour;
        systemTime.Minute = minute;
        systemTime.Second = second;

        if (SetSystemTime(ref systemTime))
        {
            MessageBox.Show("Time changed!");
        }
        else 
        {
            MessageBox.Show("Time change failed.");
        }
    }

是什么导致了这次崩溃,我该如何预防?我必须从写过滤器中排除一些东西吗?

4

0 回答 0