ErBhati Ответов: 3

Если Пользователь Изменит Системную Дату, То Как Я Получу Текущую Дату В Приложении Windows


Я работаю над приложением для windows. Я использую типа datetime.Сейчас.Метод toString("ММ/ДД/гггг"); для получения текущей даты. Если я изменю системную дату, то дата, возвращаемая DateTime. Now (), также изменится, что является уязвимым.

У кого-нибудь есть решение для этого? Спасибо

3 Ответов

Рейтинг:
2

Abhinav S

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

Кроме того, используйте Интернет для получения даты с какого-либо внешнего сервера времени.


Рейтинг:
2

Afzaal Ahmad Zeeshan

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

Что вы можете сделать, так это получить DateTime с вашего собственного сервера для работы. Это позволило бы свести к минимуму ошибку получения неточного времени. Попробуйте использовать DateTime.UtcNow, чтобы получить время Utc на вашем собственном сервере. Таким образом, вы можете сохранить фактическую дату-время на вашем сервере и дату-время пользователя в отдельном файле папки AppData. Где вы сравниваете дату и время перед каждым выполнением.

Но есть много других методов для получения точной даты и времени, взгляните на этот[^] вебсайт. Вы можете получить время и оттуда.

Но даже Дата-Время.UtcNow, который был выполнен на компьютере клиента, даст объект DateTime, который будет преобразован в тип Utc объекта DateTime, возвращенного из datetime его системы.

Помнить: Вы не можете запретить пользователю что-либо делать. Windows позволит ему это сделать, это ваша работа-быть таким же пессимистом, чтобы быть уверенным в этих вещах. Он будет делать много злых вещей, о которых вам нужно быть осторожным :D


ErBhati

Хорошее предложение.

Afzaal Ahmad Zeeshan

Спасибо Эрбхати.

Рейтинг:
1

Mathew Soji

Попробуйте загрузить дату и время с внешнего сервера и отобразить их в клиенте .Как правило, только пользователь с правами администратора имеет возможность изменить дату/время.