亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? configobj.pas

?? VC++實現的時間同步程序
?? PAS
字號:
{ ************************************************************************

   NetTime is copyrighted by Graham Mainwaring. Permission is hereby
   granted to use, modify, redistribute and create derivative works
   provided this attribution is not removed. I also request that if you
   make any useful changes, please e-mail the diffs to graham@mhn.org
   so that I can include them in an 'official' release.

  ************************************************************************ }

unit ConfigObj;

interface

uses SysUtils, timewrap, NetTimeCommon, IsWinNT, WinSvc, Math;

type
  TConfigObj = class
  private
    FServerCount: integer;
    FServers: TServerDefArray;
    Fsyncfreq: integer;
    Flostsync: integer;
    Fwarnadj: integer;
    Fretry: integer;
    Fserver: boolean;
    Floadonlogin: boolean;
    Fserviceonboot: boolean;
    function GetServer(idx: integer): TServerDef;
  public
    constructor Create;
    procedure ReadFromRegistry;
    procedure ReadFromRunning(tt: TNetTimeServerBase);
    procedure WriteToRegistry;
    procedure WriteToRunning(tt: TNetTimeServerBase);
    property ServerCount: integer read FServerCount;
    property Servers[idx: integer]: TServerDef read GetServer;
    property SyncFreq: integer read Fsyncfreq write Fsyncfreq;
    property LostSync: integer read Flostsync write Flostsync;
    property WarnAdj: integer read Fwarnadj write Fwarnadj;
    property Retry: integer read Fretry write Fretry;
    property Server: boolean read Fserver write Fserver;
    property LoadOnLogin: boolean read Floadonlogin write Floadonlogin;
    property ServiceOnBoot: boolean read Fserviceonboot write Fserviceonboot;
    procedure ClearServerList;
    procedure AddServer(const Srv: TServerDef);
  end;

implementation

uses windows, registry;

function FindExe(const exefn: string): string;

var
  dir: string;
  di: TSearchRec;
  found: boolean;

begin
  dir := ExtractFilePath(ExpandFileName(ParamStr(0)));
  found := (FindFirst(dir+exefn,faAnyFile,di) = 0);
  {$WARNINGS OFF} FindClose(di.FindHandle); {$WARNINGS ON}
  if found then
    result := dir + di.Name
  else
    begin
      result := '';
      raise exception.create('Could not locate '+exefn);
    end;
end;

constructor TConfigObj.Create;
begin
  inherited Create;
  FServerCount := 0;
  Fsyncfreq := DefaultSyncFreq;
  Flostsync := DefaultLostSync;
  Fretry := DefaultRetry;
  Fwarnadj := DefaultWarnAdj;
  Fserver := false;
  Floadonlogin := false;
  Fserviceonboot := false;
end;

procedure TConfigObj.ReadFromRegistry;

var
  reg: TRegistry;
  i: integer;
  s: string;
  sch, svh: THandle;
  qsc: QUERY_SERVICE_CONFIG;
  qbn: cardinal;

  procedure GetServerInfo(const n: integer);

  var
    sd: TServerDef;
    hns: string;

  begin
    if n = 0 then
      hns := ''
    else
      hns := inttostr(n);
    sd.Hostname := '';
    try
      sd.Hostname := reg.ReadString('Hostname'+hns);
    except
    end;
    if sd.Hostname <> '' then
      begin
        sd.protocol := ttpRFC868_TCP;
        try
          sd.protocol := TTimeProto(reg.ReadInteger('Protocol'+hns));
        except
        end;
        sd.Port := DefaultPortForProtocol(sd.Protocol);
        try
          sd.Port := reg.ReadInteger('Port'+hns);
        except
        end;
        FServers[FServerCount] := sd;
        inc(FServerCount);
      end;
  end;

begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
  if reg.OpenKey('Software\Subjective Software\NetTime',false) then
    begin
      for i := 0 to MaxServers-1 do
        GetServerInfo(i);
      try
        Fsyncfreq := reg.ReadInteger('SyncFreq');
      except
      end;
      try
        Flostsync := reg.ReadInteger('LostSync');
      except
      end;
      try
        Fwarnadj := reg.ReadInteger('WarnAdj');
      except
      end;
      try
        Fretry := reg.ReadInteger('Retry');
      except
      end;
      Fserver := false;
      try
        Fserver := reg.ReadBool('Server');
      except
      end;
    end;
  reg.CloseKey;
  if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false) then
    begin
      try
        s := reg.ReadString('NetTime')
      except
        s := '';
      end;
      Floadonlogin := (s <> '');
    end;
  reg.CloseKey;
  if IsWindowsNT then
    begin
      sch := OpenSCManager(nil,nil,SC_MANAGER_CONNECT);
      if sch = 0 then
        Fserviceonboot := false;
      svh := OpenService(sch,'NetTimeSvc',SERVICE_ALL_ACCESS);
      if svh = 0 then
        Fserviceonboot := false
      else
        begin
          svh := OpenService(sch,'NetTimeSvc',SERVICE_ALL_ACCESS);
          if svh = 0 then
            Fserviceonboot := false
          else
            begin
              QueryServiceConfig(svh,@qsc,sizeof(qsc),qbn);
              if (qsc.dwStartType = SERVICE_AUTO_START) then
                Fserviceonboot := true
              else
                Fserviceonboot := false;
            end;
          CloseServiceHandle(svh);
        end;
      CloseServiceHandle(sch);
    end
  else
    begin
      if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunServices',false) then
        begin
          try
            s := reg.ReadString('NetTime Service')
          except
            s := '';
          end;
          Fserviceonboot := (s <> '');
        end;
      reg.CloseKey;
    end;
  reg.Free;
end;

procedure TConfigObj.ReadFromRunning(tt: TNetTimeServerBase);

var
  cfg: TServerConfigBlock;

begin
  cfg := tt.GetConfig;
  FServerCount := cfg.ServerCount;
  FServers := cfg.Servers;
  Fsyncfreq := cfg.SyncFreq;
  Flostsync := cfg.LostSync;
  Fwarnadj := cfg.WarnAdj;
  Fretry := cfg.Retry;
  Fserver := tt.Server;
end;

procedure TConfigObj.WriteToRegistry;

var
  reg: TRegistry;
  i: integer;
  sch, svh: THandle;
  s: string;

  procedure WriteServer(const n: integer);

  var
    hns: string;

  begin
    if n = 0 then
      hns := ''
    else
      hns := inttostr(n);
    if (n < ServerCount) then
      begin
        reg.WriteString('Hostname'+hns,Servers[n].hostname);
        reg.WriteInteger('Protocol'+hns,integer(servers[n].protocol));
        reg.WriteInteger('Port'+hns,servers[n].port);
      end
    else
      begin
        reg.DeleteValue('Hostname'+hns);
        reg.DeleteValue('Protocol'+hns);
        reg.DeleteValue('Port'+hns);
      end;
  end;

begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
  if reg.OpenKey('Software\Subjective Software\NetTime',true) then
    begin
      for i := 0 to MaxServers-1 do
        WriteServer(i);
      reg.WriteInteger('SyncFreq',syncfreq);
      reg.WriteInteger('LostSync',lostsync);
      reg.WriteInteger('WarnAdj',warnadj);
      reg.WriteInteger('Retry',retry);
      reg.WriteBool('Server',server);
    end;
  reg.CloseKey;
  if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',true) then
    begin
      if LoadOnLogin then
        reg.WriteString('NetTime',FindExe('NetTime.exe'))
      else
        reg.DeleteValue('NetTime');
    end;
  reg.CloseKey;
  if IsWindowsNT then
    begin
      sch := OpenSCManager(nil,nil,SC_MANAGER_CONNECT);
      if sch = 0 then
        raise exception.create('Could not open service control manager');
      svh := OpenService(sch,'NetTimeSvc',SERVICE_ALL_ACCESS);
      if svh = 0 then
        begin
          s := FindExe('NeTmSvNT.exe') + ' /install /silent';
          WinExecAndWait(pchar(s),SW_SHOW);
          svh := OpenService(sch,'NetTimeSvc',SERVICE_ALL_ACCESS);
        end;
      if svh = 0 then
        raise exception.create('Could open NetTime service');
      if not ChangeServiceConfig(svh, SERVICE_NO_CHANGE,
        IfThen(Fserviceonboot, SERVICE_AUTO_START, SERVICE_DEMAND_START),
        SERVICE_NO_CHANGE, nil, nil, nil, nil, nil, nil, nil) then
        raise exception.create('Could not update service configuration. '+
          'Error: ' + SysErrorMessage(GetLastError));
      CloseServiceHandle(svh);
      CloseServiceHandle(sch);
    end
  else
    begin
      if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunServices',true) then
        begin
          if ServiceOnBoot then
            reg.WriteString('NetTime Service',FindExe('NeTmSv95.exe'))
          else
            reg.DeleteValue('NetTime Service');
        end;
      reg.CloseKey;
    end;
  reg.Free;
end;

procedure TConfigObj.WriteToRunning(tt: TNetTimeServerBase);

var
  cfg: TServerConfigBlock;

begin
  cfg.ServerCount := FServerCount;
  cfg.Servers := FServers;
  cfg.SyncFreq := syncfreq;
  cfg.LostSync := lostsync;
  cfg.WarnAdj := warnadj;
  cfg.Retry := retry;
  tt.SetConfig(cfg);
  tt.Server := server;
end;

function TConfigObj.GetServer(idx: integer): TServerDef;
begin
  result := FServers[idx];
end;

procedure TConfigObj.ClearServerList;
begin
  FServerCount := 0;
end;

procedure TConfigObj.AddServer(const Srv: TServerDef);
begin
  FServers[FServerCount] := Srv;
  inc(FServerCount);
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人片观看| 国产一区二区三区| 另类调教123区| 日韩精品一区第一页| 日韩精品亚洲专区| 日本va欧美va瓶| 国产精品66部| 在线免费亚洲电影| 91.xcao| 日韩精品一区二区三区中文不卡| 久久精子c满五个校花| 中文字幕免费一区| 亚洲成av人片在线观看无码| 青青草97国产精品免费观看 | 久久久www免费人成精品| 久久精品视频在线看| 亚洲欧美激情在线| 麻豆精品视频在线观看| 成人免费av网站| 欧美日韩综合色| 中文字幕一区二区三区不卡| 日韩在线a电影| 91麻豆精品在线观看| 精品少妇一区二区三区| 亚洲在线视频网站| 国产精品69毛片高清亚洲| 欧美色电影在线| 一区在线播放视频| 久久精品国产亚洲a| 欧美日韩你懂的| 亚洲乱码日产精品bd| 国产激情一区二区三区四区| 日韩亚洲欧美综合| 亚洲成人综合视频| 日本久久一区二区三区| 欧美—级在线免费片| 精品午夜久久福利影院| 制服丝袜成人动漫| 日本在线观看不卡视频| 欧美色视频在线观看| 亚洲图片欧美色图| 欧美在线一区二区| 亚洲一区二区三区在线播放| 91蜜桃婷婷狠狠久久综合9色| 久久久久久免费| 成人免费看片app下载| 国产亚洲一本大道中文在线| 国产精品一区久久久久| 久久精品夜色噜噜亚洲a∨| 国产成人欧美日韩在线电影| 国产三级欧美三级日产三级99 | 蜜臀av亚洲一区中文字幕| 欧美日韩一区国产| 秋霞av亚洲一区二区三| 欧美成人官网二区| 成人手机电影网| 亚洲欧美日韩在线播放| 欧美日韩国产一级二级| 美女视频网站久久| 国产欧美一区二区三区鸳鸯浴| 国产一区二区三区av电影| 亚洲色图欧美激情| 欧美老女人在线| 国产成人亚洲精品青草天美| 亚洲欧美日韩国产综合在线| 欧美日韩国产美女| 成人综合婷婷国产精品久久免费| 国产精品不卡在线| 在线综合+亚洲+欧美中文字幕| 久久国产三级精品| 亚洲精品视频在线看| 91精品免费在线| 东方欧美亚洲色图在线| 亚洲成人动漫在线免费观看| 久久精品一区蜜桃臀影院| 欧美最新大片在线看| 激情文学综合网| 亚洲午夜精品17c| 欧美极品美女视频| 日韩美女主播在线视频一区二区三区| 国产成a人亚洲| 美女视频黄 久久| 亚洲人成影院在线观看| 久久嫩草精品久久久精品| 色狠狠一区二区三区香蕉| 国产成人精品免费网站| 日本成人在线不卡视频| 亚洲精选视频在线| 国产精品久久久久精k8| 日韩一级大片在线| 欧美一级欧美三级| 欧美日韩精品欧美日韩精品一| 99精品视频在线播放观看| 国产不卡在线视频| 国产在线精品一区二区三区不卡 | 蜜桃视频免费观看一区| 亚洲福利国产精品| 亚洲第一激情av| 亚洲高清视频中文字幕| 亚洲第一二三四区| 国产伦精一区二区三区| 精品福利一二区| 亚洲乱码国产乱码精品精的特点| 欧美精品vⅰdeose4hd| 精品亚洲国产成人av制服丝袜| 日韩av一级片| 美国三级日本三级久久99| 久久精品久久久精品美女| 狠狠色综合播放一区二区| 国产乱国产乱300精品| 国产成人精品1024| 91玉足脚交白嫩脚丫在线播放| 91香蕉国产在线观看软件| 色婷婷亚洲一区二区三区| 欧美电影在哪看比较好| 精品国产91亚洲一区二区三区婷婷| 日韩视频一区二区三区在线播放 | 欧美成人女星排行榜| 久久夜色精品一区| 亚洲视频一区二区在线| 亚洲成人久久影院| 国产高清成人在线| 日本二三区不卡| 久久久欧美精品sm网站| 一区二区三区中文字幕在线观看| 五月婷婷综合激情| 国产精品123| 欧美欧美欧美欧美首页| 精品乱人伦小说| 欧美性猛片xxxx免费看久爱| 精品久久人人做人人爽| 亚洲综合图片区| 成人一区二区三区| 欧美一区二区三区成人| 亚洲丝袜另类动漫二区| 久久66热re国产| 欧美三级电影在线观看| 国产精品久久久久aaaa| 精品一区精品二区高清| 欧美偷拍一区二区| 中文字幕一区二区5566日韩| 国产美女一区二区| 日韩欧美一区二区免费| 亚洲黄色免费网站| www.av亚洲| 国产欧美精品一区二区三区四区| 午夜私人影院久久久久| 色综合久久久久综合体桃花网| 国产日本亚洲高清| 高清不卡一区二区| 国产日本一区二区| 成人午夜在线免费| 国产精品美女视频| 国产黄色精品视频| 国产欧美精品一区| 成人三级伦理片| 亚洲欧洲日韩女同| 北岛玲一区二区三区四区| 中文字幕av一区二区三区 | heyzo一本久久综合| 欧美国产综合一区二区| www.在线成人| 亚洲精品乱码久久久久久| 欧美撒尿777hd撒尿| 免费在线视频一区| 精品久久久久久久人人人人传媒| 国产高清视频一区| 中文字幕视频一区二区三区久| 99re6这里只有精品视频在线观看| 成人免费在线视频| 欧美视频在线观看一区| 久久精品99国产精品日本| 国产精品欧美一区喷水| 欧美综合亚洲图片综合区| 热久久一区二区| 国产精品久久久爽爽爽麻豆色哟哟| 99久久伊人网影院| 日产欧产美韩系列久久99| 亚洲精品在线观| 91福利视频网站| 激情丁香综合五月| 一区二区三区高清| 国产人伦精品一区二区| 欧美午夜片在线观看| 国产成人免费视频网站高清观看视频| 亚洲三级电影网站| 日韩免费视频一区| 在线观看亚洲专区| 成人精品小蝌蚪| 麻豆成人免费电影| 亚洲在线视频免费观看| 欧美经典一区二区| 欧美一级黄色片| 欧美日韩另类国产亚洲欧美一级| 国产剧情av麻豆香蕉精品| 午夜伊人狠狠久久| 亚洲综合激情小说| 国产精品久久久久国产精品日日| 2020国产精品自拍| 91精品国产麻豆国产自产在线 |