У меня есть приложение MFC, которое пытается изменить настройку системной зоны в Windows Server 2008 R2.Я использую API SetTimeZoneInformation (), который завершается ошибкой с кодом ошибки 1314 .ie «Требуемая привилегия не удерживается клиентом».Пожалуйста, обратитесь к приведенному ниже образцу кода:
TIME_ZONE_INFORMATION l_TimeZoneInfo;
DWORD l_dwRetVal = 0;
ZeroMemory(&l_TimeZoneInfo, sizeof(TIME_ZONE_INFORMATION));
l_TimeZoneInfo.Bias = -330;
l_TimeZoneInfo.StandardBias = 0;
l_TimeZoneInfo.StandardDate.wDay = 0;
l_TimeZoneInfo.StandardDate.wDayOfWeek = 0;
l_TimeZoneInfo.StandardDate.wHour = 0;
l_TimeZoneInfo.StandardDate.wMilliseconds = 0;
l_TimeZoneInfo.StandardDate.wMinute = 0;
l_TimeZoneInfo.StandardDate.wMonth = 0;
l_TimeZoneInfo.StandardDate.wSecond = 0;
l_TimeZoneInfo.StandardDate.wYear = 0;
CString l_csDaylightName = _T("India Daylight Time");
CString l_csStdName = _T("India Standard Time");
wcscpy(l_TimeZoneInfo.DaylightName,l_csDaylightName.GetBuffer(l_csDaylightName.GetLength()));
wcscpy(l_TimeZoneInfo.StandardName,l_csStdName.GetBuffer(l_csStdName.GetLength()));
::SetLastError(0);
if(0 == ::SetTimeZoneInformation(&l_TimeZoneInfo))
{
l_dwRetVal = ::GetLastError();
CString l_csErr = _T("");
l_csErr.Format(_T("%d"),l_dwRetVal);
}
Приложение MFC было разработано с использованием Visual Studio 2008 и поддерживает UAC, т. Е. В файле манифеста включено UAC с уровнем выполнения UAC, установленным в «HighestAvailable»,У меня есть права администратора, и когда я запускаю приложение, оно по-прежнему не может изменить настройку системной зоны.
Заранее спасибо, Ганеш