Dicas - Mudando o IP e DNS do windows em RunTime

Neste artigo veremos como utilizar o Delphi para alterar IP e DNS do Windows em tempo de execução.

O problema: mudar o endereço IP de uma placa de rede sem reiniciar o PC. Para isso utilize a Listagem 1.

1 function CriaProcesso(comando: string):integer; 2 var 3 zAppName: array[0..512] of char; 4 zCurDir: array[0..255] of char; 5 WorkDir: string; 6 StartupInfo: TStartupInfo; 7 ProcessInfo: TProcessInformation; 8 Resultado: DWord; 9 begin 10 StrPCopy(zAppName, comando); 11 GetDir(0, WorkDir); 12 StrPCopy(zCurDir, WorkDir); 13 FillChar(StartupInfo, Sizeof(StartupInfo), #0); 14 StartupInfo.cb := Sizeof(StartupInfo); 15 StartupInfo.dwFlags := STARTF_USESHOWWINDOW; 16 StartupInfo.wShowWindow := sw_hide; 17 18 if not CreateProcess(nil, zAppName, nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then 19 Result := -1 { ponteiro para o PROCESS_INF } 20 else 21 begin 22 WaitforSingleObject(ProcessInfo.hProcess, INFINITE); 23 GetExitCodeProcess(ProcessInfo.hProcess,Resultado); 24 Result := Resultado; 25 end; 26 end; 27 28 function DefinirIP(NomeConexao, Ip, Netmask, Gateway: string):boolean; 29 begin 30 Result:=( CriaProcesso(Format('netsh int ip set address name="%s" source=static %s %s %s 1',[ NomeConexao, Ip, NetMask, Gateway]))=0 ); 31 end; 32 33 34 function FixarDNS(NomeConexao: String; ipDNS: string): boolean; 35 begin 36 Result:=( CriaProcesso(Format('netsh int ip set dns "%s" static %s', [NomeConexao, ipDNS]))=0 ); 37 end; 38 39 procedure TForm1.Button1Click(Sender: TObject); 40 begin 41 if NOT DefinirIP( 'Conexão de Rede sem Fio', '192.168.25.126', '255.255.255.0', '192.168.25.1') then 42 ShowMessage('Erro na alteração do IP') 43 else 44 ShowMessage('IP alterado sem erros'); 45 end; 46 47 procedure TForm1.Button2Click(Sender: TObject); 48 begin 49 if NOT FixarDNS( 'Conexão de Rede sem Fio', '192.168.25.1') then 50 ShowMessage('Erro na Fixação do DNS') 51 else 52 ShowMessage('DNS alterado sem erros'); 53 end;
Listagem 1. Exemplo de uso de Unicode String em showmessages
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados