Windows XP SP3 상자에서 WinAPI를 사용하여 표준 시간대를 설정하고 있습니다. HKLM\Software\Microsoft\WindowsNT\Time Zones\<time zone name>
키에서 시간대 정보를 읽은 다음 시간대를 지정된 시간대로 설정하고 있습니다.시스템 시간대 변경이 한 번 성공하면 더 이상 변경되지 않습니다.
시간대 키 아래의 키를 열거하고 TZI
값을 잡고 SetTimeZoneInformation에 전달할 TIME_ZONE_INFORMATION
구조체에 채 웁니다. 모두 첫 번째 패스에서 작동하는 것 같습니다. 표준 시간대가 변경되면 오류가 반환되지 않습니다.
두 번째로이 작업을 수행하면 (동일한 사용자, 새 세션, userinit 이전의 로그인시) 호출은 성공하지만 시스템이 표준 시간대 변경을 반영하지 않습니다. 파일의 시계 또는 시간 스탬프가 새 표준 시간대로 업데이트되지 않습니다. 탐색 할 때 : HKLM\System\CurrentControlSet\Control\TimeZoneInformation
내 새로운 표준 시간대 정보가 있습니다.
내 시간대 설정에있을 때 이상한 일이 일어나고 몇 : 내 TIME_ZONE_INFORMATION
구조체에 내가 구조체가있다 알았어 야를 저장하는 레지스트리에서 TZI 이진 값을 구문 분석 할 때 또한
- 을
DaylightDate.wDay
및StandardDate.wDay
필드가 항상 0 - 로 설정 나는
SetTimeZoneInformation
전화 직후 GetTimeZoneInformation 통화를 시도했으나 전화 통화가 1300 오류 (안 호출자에게 할당 된 참조 된 모든 권한 또는 그룹.)
WM_BROADCAST
메시지를 보내려면 탐색기에서 무슨 일이 일어나는지 확인해야합니다.
TIME_ZONE_INFORMATION
구조체에 대해 바이트 배열을 구문 분석한다고 생각하십니까? 아니면 내가 중요한 다른 것을 놓치고 있는가?
편집 :
찾을 왜 이런 일을 알리는 문서 : here. 권한은 마이크로 소프트 documentation 당
내가 현재 프로세스
토큰에 대한 SE_TIME_ZONE_NAME 권한을 가능하게하고있어 ... ... Vista에서 감사 MSDN의 문서를 소개되었다. 내가
SE_TIME_ZONE_NAME에 대한
LookupPriviledgeValue를 호출 할 때 그러나 나는 1313 오류가 (A 지정된 권한이 이 존재하지 않습니다.) 얻을.
감사합니다. 그러나 AdjustTokenPriviledge가 올바르게 작동하고 있다고 생각합니다. SE_TIME_ZONE_NAME이 (가) XP에 없기 때문에 질문을 편집했습니다. –