Есть ли способ включить и отключить DST (летнее время) в ОС Windows по коду?
Я следовал инструкциям, указанным в следующей ссылке , но безуспешно ...
Также я пытался изменить свойство Bias структуры DYNAMIC_TIME_ZONE_INFORMATION
, это позволяет мне изменять дату и время, но не включать и не отключать DST ...
Есть ли способ решить эту проблему?
Следующий исходный код отключает только DST, но мне нужно включить снова ...
OpenProcessToken(::GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
TOKEN_PRIVILEGES tp;
LookupPrivilegeValue(NULL, SE_TIME_ZONE_NAME, &tp.Privileges[0].Luid);
tp.PrivilegeCount = 1;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
DYNAMIC_TIME_ZONE_INFORMATION dyTimeZoneInfo;
ZeroMemory(&dyTimeZoneInfo, sizeof(dyTimeZoneInfo));
DWORD tzId = GetDynamicTimeZoneInformation(&dyTimeZoneInfo);
dyTimeZoneInfo.DynamicDaylightTimeDisabled = !dyTimeZoneInfo.DynamicDaylightTimeDisabled;
dyTimeZoneInfo.DaylightBias = 0;
dyTimeZoneInfo.StandardDate.wDay = 0;
dyTimeZoneInfo.StandardDate.wDayOfWeek = 0;
dyTimeZoneInfo.StandardDate.wHour = 0;
dyTimeZoneInfo.StandardDate.wMilliseconds = 0;
dyTimeZoneInfo.StandardDate.wMinute = 0;
dyTimeZoneInfo.StandardDate.wMonth = 0;
dyTimeZoneInfo.StandardDate.wSecond = 0;
dyTimeZoneInfo.StandardDate.wYear = 0;
dyTimeZoneInfo.DaylightDate.wDay = 0;
dyTimeZoneInfo.DaylightDate.wDayOfWeek = 0;
dyTimeZoneInfo.DaylightDate.wHour = 0;
dyTimeZoneInfo.DaylightDate.wMilliseconds = 0;
dyTimeZoneInfo.DaylightDate.wMinute = 0;
dyTimeZoneInfo.DaylightDate.wMonth = 0;
dyTimeZoneInfo.DaylightDate.wSecond = 0;
dyTimeZoneInfo.DaylightDate.wYear = 0;
SetDynamicTimeZoneInformation(&dyTimeZoneInfo);
tp.Privileges[0].Attributes = NULL;
AdjustTokenPrivileges(hToken, FALSE, &tp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
CloseHandle(hToken);
Буду признателен за любую помощь.