문제

C #에서 프로그래밍 방식으로 로컬 시스템의 Windows 시간대를 어떻게 설정합니까?원격 장치에는 사용자 인터페이스 나 사용자가 없기 때문에 대화 형 도구를 사용하는 것은 옵션이 아닙니다.원격 컴퓨터는 .NET 2.0 및 Windows XP Embedded와 작업의 자동화 된 지시를 위해 중앙 서버 (웹 서비스를 통해)와 통신하는 로컬 앱을 실행하고 있습니다.특정 시간 / 지역 조합에 동기화하는 명령을 전달할 수 있지만 변경을 수행하기 위해 로컬 앱에 어떤 코드를 넣을 수 있습니까?장비는 설치 전에 특정 위치에 대한 이미지가 생성되지 않으므로 어떤 위치에서든 장비를 사용하려면이 정보를 동기화 할 수 있어야합니다.

도움이 되었습니까?

해결책

SetTimeZoneInformation 은 필요한 작업을 수행해야합니다.이를 얻으려면 P / Invoke 를 사용해야합니다.

또한 SE_TIME_ZONE_NAME 권한을 소유하고 활성화해야합니다.

다른 팁

Windows 7에서는 작동하지 않습니다. 다음 환경에서 시도했습니다. 윈도우 7 VSTS-2008 수동으로하는 것처럼 시간대 변경 창을 엽니 다.

<인용구>

산토스 당신은 확실히 옳습니다.RunDLL32 shell32.dll, Control_RunDLL % SystemRoot % \ system32 \ TIMEDATE.cpl ,, / Z % 1 수년 동안 사용되지 않으며 Windows 2008, R2, Vista, 7, ...에서 실행되지 않습니다. 오, 네,이 포럼에 Enter 키를 인식하는 데 완전한 버그가있는 것 같습니다.언젠가 프로그래머가 그 문제를 고칠 수도 있습니다.

해보기 ...

먼저 레지스트리에서 원하는 영역을 나타내는 를 찾아야합니다 (예 : "중부 표준시").여기에 있습니다. <인용구>

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ 현재 버전 \ 시간대

그러므로이를 염두에두고 다음 줄이 포함 된 배치 파일 "SetTimeZone.bat"를 만듭니다. <인용구>

RunDLL32 shell32.dll, Control_RunDLL % SystemRoot % \ system32 \ TIMEDATE.cpl ,, / Z % 1

C #에서 다음을 호출합니다. <인용구>

System.Diagnostics.Process.Start ( "SetTimeZone.bat", "설정하려는 시간대의 키");

UTC를 사용하여 날짜를 전송하지 않으면 데이터가 잘못 될 위험이 있습니다. 기기에서 시간대를 변경하면 ... 날짜가 더 멀어집니다.

UTC를 사용한 다음 각 시간대의 시간을 계산할 수 있습니다.

일부 시스템의 시간대를 설정하는 대신 Windows 시간 서비스 사용을 고려해야합니다.시간대 만 처리하는 것이 아닙니다.또한 날짜 및 시간 자체의 올바른 설정도 처리합니다.

다음을 살펴보십시오. Windows에서 시간을 Windows 시간 서비스와 동기화하는 방법XP

Vista 또는 Windows 7에서 이러한 모든 설정을 지정하려는 경우에도 여기 .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top