2010-06-09 5 views
0

Windows Server 2008 R2에서 시스템 영역 설정을 변경하려고하는 MFC 응용 프로그램이 있습니다. 오류 코드 1314와 함께 실패하는 SetTimeZoneInformation() API를 사용하고 있습니다. "필요한 권한은 클라이언트가 보유하지 않습니다." 아래의 샘플 코드를 참조하십시오 :Windows Server 2008 R2에서 시스템 영역 설정을 변경할 수 없습니다.

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 응용 프로그램은 비주얼 스튜디오 2008를 사용하여 개발 및 UAC가 "HighestAvailable"로 설정 UAC 실행 수준과의 매니페스트 파일에서 사용할 수있다 UAC 인식, 즉 응용 프로그램입니다되었습니다. 관리자 권한이 있으며 응용 프로그램을 실행할 때 시스템 영역 설정을 변경하지 못합니다. 당신은 필요가 없습니다 미리

감사합니다, 가네

답변

0

는 시간대를 변경하려면 관리자로 실행해야합니다. According to the documentation, 에는 SE_TIME_ZONE_NAME 권한이 필요합니다. 링크 된 문서에는 권한을 활성화하는 방법에 대한 샘플이 있지만 대부분 프로세스의 액세스 토큰에 AdjustTokenPrivileges을 호출해야합니다.

+0

답장을 보내 주셔서 감사합니다. 그게 문제를 해결할 것 같지만, 아직 확인 중입니다. 일단 확인되면 다시 당신에게 돌아올 것입니다. – Ganesh

+0

다시 한 번 감사드립니다. 솔루션이 완벽하게 도움이됩니다. – Ganesh

관련 문제