У меня есть проблема, из-за которой иногда (мне еще не удалось выяснить шаблон, это происходит только несколько раз, когда я пытаюсь), если мое приложение изменяет windows время, используя SetSystemTime()
, Windows, происходит сбой.
И под этим я подразумеваю всплывающее сообщение с заголовком
Microsoft Windows
и текстом
Приложение не отвечает. Программа может ответить снова, если вы подождете.
... с помощью кнопок [Завершить процесс] и [Отмена].
Я ждал довольно долго (например, 20 минут ) и он не исчез.
Если я завершу процесс или отмена, панель задач исчезнет, а окно сообщения исчезнет. Но если я нажимаю любую клавишу на клавиатуре, окно сообщения возвращается. Я не могу просмотреть диспетчер задач с системой в этом состоянии. Нажатие Ctrl-Alt-Delete ничего не делает, также как и Ctrl-Shift-Es c.
Дело в том, что это происходит не каждый раз, и это происходит только тогда, когда фильтры записи (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.");
}
}
Что вызывает этот взлом sh и как его предотвратить ? Что я должен исключить из фильтров записи?