Обновление системного времени C

#c #winapi

#c #winapi

Вопрос:

Эта программа выдает текущую дату и время.

Есть ли способ изменить системное время, только если системная дата = (определяется пользователем)

  #include <stdio.h>
#include <time.h>

int main(void) {

    time_t rawtime;
    struct tm*  time_;

    time(amp;rawtime);
    time_ = localtime(amp;rawtime);

    printf("%i:%i:%i %i %i %in", time_->tm_hour, time_->tm_min, 
            time_->tm_sec, time_->tm_mday, time_->tm_mon 1,
            time_->tm_year 1900);

   getchar();
}
 

Комментарии:

1. C и C — это два разных языка. Решите, какой из них вы используете.

2. Используйте <chrono> для получения времени в C . Изменение времени работы операционной системы зависит от операционной системы. Итак, на какую ОС вы ориентируетесь?

Ответ №1:

Установка системного времени в Windows немного сложнее, чем может показаться на первый взгляд. Очень немногие программы имеют основания для этого, поэтому даже код, работающий под учетной записью, которая имеет право на это, все равно должен включить для этого правильную привилегию ( SE_SYSTEMTIME_NAME ) .

Чтобы включить привилегию, вы используете OpenProcessToken , затем AdjustTokenPrivileges CloseHandle когда вы закончите с токеном). Затем вы можете установить время с SetSystemTime помощью .