neha_prasad Ответов: 4

Как я могу обнаружить, что кто-то изменил системную дату и время


Привет;


Я хочу знать, как разработчик я могу определить, есть ли у кого-то изменения в системе(ПК) Дата. Если я назначил 31-е число - это последняя дата запуска программного обеспечения. а пользователь меняет системную(компьютерную) дату на 24-е или 25-е и может ее использовать. Так есть ли какой-нибудь способ определить, что системная дата была изменена.


Спасибо

Что я уже пробовал:

Как я могу обнаружить, что кто-то изменил системную дату и время

4 Ответов

Рейтинг:
1

OriginalGriff

Единственный способ действительно обнаружить его-это использовать внешний источник времени, такой как сервер NTP: Подключение К Сетевому Серверу Времени[^]

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


Рейтинг:
1

Patrice T

Цитата:
Как я могу обнаружить, что кто-то изменил системную дату и время

Действительно, кто-то всегда может изменить дату компьютера, чтобы обойти временную защиту, но побочные эффекты огромны.
Из-за неправильной даты компьютер не может получить доступ к интернету по протоколу https, даже службы NTP недоступны и поэтому не могут повторно синхронизировать компьютер.
Если застройщик, то неправильная дата внесет беспорядок в процесс строительства проекта.
Резервные копии на основе дат испорчены.

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


Рейтинг:
1

Doug- VisualBasic VB.NET

Если у вас есть доступ к серверу, способному разместить API.
Напишите API, который записывает информацию для каждого пользователя, такую как дата, время и идентификационная информация. Когда ваше программное обеспечение загружается, оно проверяет API на наличие разрешения на запуск. Изменение даты или даже виртуальной машины не будет работать. Установить программу не запускать, если он не может соединиться с сервером по API. Или вы можете разрешить 5 дней времени выполнения каждый раз, когда он подключается, пока не закончится время.

В наш век облачных вычислений доступ к интернету для программного обеспечения не является необоснованным.


Рейтинг:
0

MadMyche

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

В Windows есть журнал событий, который отслеживает множество вещей. В этот журнал также можно читать и записывать данные. Пожалуйста, просмотрите эту статью, чтобы увидеть, если это то, что будет работать для вас.
Журнал событий.Метод GetEventLogs (System.Диагностика) | Microsoft Docs[^]

И как только вы определите, можете ли вы успешно прочитать его; вы захотите искать событие #4616, которое указывает на изменение системного времени. Теперь это нормально для Windows, чтобы самостоятельно проверить и настроить время по мере необходимости, так что вам нужно будет отфильтровать эти экземпляры, а также. Подробнее об этом вы можете прочитать здесь
Идентификатор события журнала безопасности Windows 4616 - системное время было изменено.[^]