Your wish is my command

It’s a long journey

시간 동기화하기

월요일 아침엔 회의가 있습니다. 컴퓨터 시간으로 확인하고 가보니.. 헉. . 지각입니다. 이놈의 컴퓨터 시간이 늦어진거죠. 뭔 이런 일이.. 저기 있는 아날로그 시계는 정확한데, 항상 앞에두고 보는 시계가 부정확합니다.

그래서 시간 동기화하는 툴 만들었습니다. 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 권한을 획득하고 처리하고 있습니다. 그래도 안됩니다.

결국 관리자 권한에서 실행하는 수 밖에 없군요.

찾아보면서 본 글중에 하나는 “도데체 일반 사용자가 시간을 조종할 필요가 뭐가있냐?”라는 건데, 해주고픈 말은 야 이눔아 내 컴퓨터 시간이 잘못되어있다니깐!!!! 그래서 정확한 시간으로 맞추고 싶다고!!!!