CONFIGURAR IP VIA CODIGO
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?
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?
Esse programa eu tb queria .... pq entro todo dia em mais de 2 redes.
No meu caso pode ser em VB6 mesmo ...
No meu caso pode ser em VB6 mesmo ...
Alexpassos e Samuka....
Utilizo o seguinte código para alterar IP, SubMask e Gatway....
Para alterar o IP é só usar o comando...
Obs: Necessita da referência do namespace System.Management
Abraços
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
Aqui funcionou blz!
Converti o código para C# se alguem se interessar ...
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);
}
}
}
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?
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?
AlexPassos, blz?
Encontrei essa pagina, no site do MSDN.
Acho q pode ajudar a encontrar o método correto para isso.
Encontrei essa pagina, no site do MSDN.
Acho q pode ajudar a encontrar o método correto para isso.
Samuka... na verdade eu não entendi nada nesse link
Vc conseguiu fazer alguma coisa?
Vc conseguiu fazer alguma coisa?
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.
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.
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..
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..
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
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