Akinloluwa Ответов: 3

Автоматическое обновление моего системного времени до интернет-времени по мере загрузки приложения...


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

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

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

Philippe Mori

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

Akinloluwa

Я не пытаюсь продать программу...лол.:) если для моего личного пользования... спасибо...

Philippe Mori

Почему люди хотят обойти все функции безопасности, которые Microsoft добавила со времен Vista...

Akinloluwa

лол...

3 Ответов

Рейтинг:
12

Moses Lebotsa

Привет, Акинлолува.

Существует решение проблемы такого типа здесь это ссылка на решение.

Надеюсь, это поможет. овации.


Akinloluwa

Спасибо... но этот код не устанавливает время. Пожалуйста, объясните мне, как использовать возвращаемое значение для обновления системного времени... Спасибо...

Рейтинг:
1
Рейтинг:
1

Jochen Arndt

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

При использовании SetSystemTime как было предложено OriginalGriff, ваше приложение должно иметь SE_SYSTEMTIME_NAME привилегия, которая не установлена для неадминистративных учетных записей.

Другие методы, такие как изменение конфигурации автоматического обновления времени, требуют административных привилегий. Примером может служить инструмент командной строки для настройки службы времени: Инструменты и настройки службы времени Windows: Служба времени Windows[^].

Поэтому с точки зрения безопасности лучшим вариантом является использование SetSystemTime и дайте вашему заявлению только SE_SYSTEMTIME_NAME скорее привилегией, полными привилегиями администратора.

Еще лучшим вариантом было бы позволить вашему приложению проверить правильность фактического времени, сравнив его с данными службы чистого времени. Вы можете сообщить пользователю, если разница слишком велика, попросив установить время (или просто включить службу времени Windows).


Akinloluwa

Это приложение будет работать с правами администратора. Но твоя идея тоже великолепна. Я могу работать с этим... сравнивая оба раза... Пожалуйста, могу ли я получить код c# для этого :)

Jochen Arndt

Вы уже получили необходимый код по ссылкам в других решениях:
Ссылка из решения 1 содержит код о том, как получить время из интернета
Ссылка из решения 2 объясняет, как получить и установить время Windows.

Чтобы получить разницу во времени, вы должны преобразовать время в формат, допускающий вычитание (например, тип C# DateTime).

Создание объектов DateTime из значений и вызов метода Subtract () не должно быть проблемой. Вы получите результат в виде объекта TimeSpan.

Akinloluwa

спасибо... очень полезно...