월요일 아침엔 회의가 있습니다. 컴퓨터 시간으로 확인하고 가보니.. 헉. . 지각입니다. 이놈의 컴퓨터 시간이 늦어진거죠. 뭔 이런 일이.. 저기 있는 아날로그 시계는 정확한데, 항상 앞에두고 보는 시계가 부정확합니다.
그래서 시간 동기화하는 툴 만들었습니다. Indy를 이용하니 소스도 23줄 밖에 안됩니다. 뭐 Indy가 다하니깐요.
program TimeSync;
uses
Windows,
SysUtils,
IdSNTP;
{$R *.res}
begin
try
with TIdSNTP.Create(nil) do
try
Host := '2.kr.pool.ntp.org';
SyncTime;
finally
Free;
end;
except
on E: Exception do
MessageBox(0, PChar(E.Message), 'Error', MB_ICONEXCLAMATION);
end;
end.
시작 프로그램에 등록해야겠습니다.
추가: 10.11.02
Window Vista, Windows 7에서는 동작하지 않습니다. MSDN에 보면 SetLocalTime이 SE_SYSTEMTIME_NAME 권한이 필요하다고 되어있지요. 그래서 그렇게 해주고 했는데 안됩니다. ㅡㅡ, 그래서 Indy 소스도 뒤져봤는데 Indy도 SE_SYSTEMTIME_NAME 권한을 획득하고 처리하고 있습니다. 그래도 안됩니다.
결국 관리자 권한에서 실행하는 수 밖에 없군요.
찾아보면서 본 글중에 하나는 “도데체 일반 사용자가 시간을 조종할 필요가 뭐가있냐?”라는 건데, 해주고픈 말은 야 이눔아 내 컴퓨터 시간이 잘못되어있다니깐!!!! 그래서 정확한 시간으로 맞추고 싶다고!!!!