CONFIGURAR IP VIA CODIGO

ALEXPASSOS 18/10/2010 19:32:03
#355410
Olá

Estou precisando fazer um sistema que eu consiga mudar os endereços de ip da minha máquina.... Exemplo

Salvo uma configuração de IP: 192.168.0.1 e o restante... ai salvo várias configurações e quando precisar mudar abro o programa e só clico em um botão e ele atualiza minha máquina pro IP escolhido. Sem precisar ficar indo no painel de controle e ficar mudando.

Tem como fazer isso? Como fazer?

SAMUKA 21/10/2010 20:33:48
#355653
Esse programa eu tb queria .... pq entro todo dia em mais de 2 redes.

No meu caso pode ser em VB6 mesmo ...
PAVILLION 21/10/2010 21:57:37
#355654
Alexpassos e Samuka....

Utilizo o seguinte código para alterar IP, SubMask e Gatway....

 Private Sub SetIP(ByVal IPAddress As String, ByVal SubnetMask As String, _
ByVal Gateway As String)

Dim managementClass As New ManagementClass([Ô]Win32_NetworkAdapterConfiguration[Ô])
Dim mgObjCollection As ManagementObjectCollection = managementClass.GetInstances()

For Each mgObject As ManagementObject In mgObjCollection
If Not CType(mgObject([Ô]IPEnabled[Ô]), Boolean) Then Continue For

Try
Dim objNewIP As ManagementBaseObject = Nothing
Dim objSetIP As ManagementBaseObject = Nothing
Dim objNewGate As ManagementBaseObject = Nothing

objNewIP = mgObject.GetMethodParameters([Ô]EnableStatic[Ô])
objNewGate = mgObject.GetMethodParameters([Ô]SetGateways[Ô])

Dim tmpStrArray() As String = {Gateway}

objNewGate([Ô]DefaultIPGateway[Ô]) = tmpStrArray
Dim tmpIntArray() As Integer = {1}
objNewGate([Ô]GatewayCostMetric[Ô]) = tmpIntArray

tmpStrArray(0) = IPAddress
objNewIP([Ô]IPAddress[Ô]) = tmpStrArray
tmpStrArray(0) = SubnetMask
objNewIP([Ô]SubnetMask[Ô]) = tmpStrArray

objSetIP = mgObject.InvokeMethod([Ô]EnableStatic[Ô], objNewIP, Nothing)
objSetIP = mgObject.InvokeMethod([Ô]SetGateways[Ô], objNewGate, Nothing)
Catch ex As Exception
MessageBox.Show([Ô]Erro ocorrido: [Ô] + ex.Message)
End Try
Next
End Sub


Para alterar o IP é só usar o comando...

 SetIP([Ô]192.168.1.230[Ô], [Ô]255.255.255.0[Ô], [Ô]192.168.1.51[Ô]) 


Obs: Necessita da referência do namespace System.Management

Abraços

SAMUKA 21/10/2010 23:44:27
#355655
Aqui funcionou blz!

Converti o código para C# se alguem se interessar ...


private void SetIP(string IPAddress, string SubNetMask, string Gateway)
{
ManagementClass managementClass = new ManagementClass([Ô]Win32_NetworkAdapterConfiguration[Ô]);
ManagementObjectCollection mgObjCollection = managementClass.GetInstances();

foreach (ManagementObject mgObject in mgObjCollection)
{
if ((mgObject.GetPropertyValue([Ô]IPEnabled[Ô]) is Boolean) != true) continue;

try
{
ManagementBaseObject objNewIP;
ManagementBaseObject objSetIP;
ManagementBaseObject objNewGate;

objNewIP = mgObject.GetMethodParameters([Ô]EnableStatic[Ô]);
objNewGate = mgObject.GetMethodParameters([Ô]SetGateways[Ô]);

string[] tmpStrArray = {Gateway};
objNewGate.SetPropertyValue([Ô]DefaultIPGateway[Ô], tmpStrArray);
int[] tmpIntArray = {1};
objNewGate.SetPropertyValue([Ô]GatewayCostMetric[Ô], tmpIntArray);

tmpStrArray[0] = IPAddress;
objNewIP.SetPropertyValue([Ô]IPAddress[Ô], tmpStrArray);
tmpStrArray[0] = SubNetMask;
objNewIP.SetPropertyValue([Ô]SubnetMask[Ô], tmpStrArray);

objSetIP = mgObject.InvokeMethod([Ô]EnableStatic[Ô], objNewIP,null);
objSetIP = mgObject.InvokeMethod([Ô]SetGateways[Ô], objNewGate, null);
}
catch (Exception ex)
{
MessageBox.Show([Ô]Erro ocorrido: [Ô] + ex.Message);
}
}
}
ALEXPASSOS 22/10/2010 07:19:01
#355657
Olá...

E o DNS? Muda também?

E apareceu outra dúvida.... no caso do computador ter duas placa de rede tem como escolher qual placa de rede vai ser alterado o IP?

SAMUKA 22/10/2010 14:41:18
#355687
AlexPassos, blz?

Encontrei essa pagina, no site do MSDN.

Acho q pode ajudar a encontrar o método correto para isso.
ALEXPASSOS 22/10/2010 15:00:17
#355690
Samuka... na verdade eu não entendi nada nesse link

Vc conseguiu fazer alguma coisa?
SAMUKA 22/10/2010 16:55:23
#355697
Win32_NetworkAdapterConfiguration é uma Classe e no link estão os métodos e propriedades.
Não tive tempo de procurar qual a propriedade, mas ali está a relação clompleta de propriedades da classe.

Agora é [Ô]escovar bits[Ô] afinal o PAVILLION já mostrou o caminho das pedras.
PAVILLION 22/10/2010 19:20:05
#355703
AlexPassos...

Para você alterar o DNS é só alterar esse código que mostrei para receber mais um parâmetro e utilizar alguma
daquelas propriedades, assim como o Samuka disse...Não tive tempo também de procurar qual propriedade...
E sobre a sua dúvida caso o PC tenha duas placas de rede...Não tenho nem idéia de como esse código se comporta
em um PC assim, porque nunca testei...

Fica como uma outra dica um projeto do Codeproject que eu andei pesquisando e achei...Ele fica no systray do Windows,
identifica as placas de rede que o PC possui, do jeito que você quer...Mas ele é em C#....

Segue o link: Chameleon - Connection Settings Manager

Abraços..
FROSTYNHO 04/12/2010 10:47:30
#358771
Resposta escolhida
altere pelo regedit:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{9A54B72A-BCED-40CF-B80C-A84237D395A3}]
[Ô]UseZeroBroadcast[Ô]=dword:00000000
[Ô]EnableDeadGWDetect[Ô]=dword:00000001
[Ô]EnableDHCP[Ô]=dword:00000000
[Ô]IPAddress[Ô]=hex(7):31,00,38,00,39,00,2e,00,31,00,2e,00,31,00,34,00,37,00,2e,00,\
32,00,33,00,30,00,00,00,00,00
[Ô]SubnetMask[Ô]=hex(7):32,00,35,00,35,00,2e,00,32,00,35,00,35,00,2e,00,32,00,35,\
00,35,00,2e,00,32,00,35,00,32,00,00,00,00,00
[Ô]DefaultGateway[Ô]=hex(7):31,00,38,00,39,00,2e,00,31,00,2e,00,31,00,34,00,37,00,\
2e,00,32,00,32,00,39,00,00,00,00,00
[Ô]DefaultGatewayMetric[Ô]=hex(7):30,00,00,00,00,00
[Ô]NameServer[Ô]=[Ô]200.210.234.130,200.210.234.171[Ô]
[Ô]Domain[Ô]=[Ô][Ô]
[Ô]RegistrationEnabled[Ô]=dword:00000001
[Ô]RegisterAdapterName[Ô]=dword:00000000
[Ô]TCPAllowedPorts[Ô]=hex(7):30,00,00,00,00,00
[Ô]UDPAllowedPorts[Ô]=hex(7):30,00,00,00,00,00
[Ô]RawIPAllowedProtocols[Ô]=hex(7):30,00,00,00,00,00
[Ô]NTEContextList[Ô]=hex(7):30,00,78,00,30,00,30,00,30,00,30,00,30,00,30,00,30,00,\
32,00,00,00,00,00
[Ô]DhcpClassIdBin[Ô]=hex:

OBS: tem uns exemplos de como alterar o registro do windows aki no site... espero ter ajudado... flws
Tópico encerrado , respostas não são mais permitidas