Newsgroup: it.comp.lang.visual-basic
Titolo: IpAddress???!!!???

...è possibile da codice impostare e\o cambiare l'indirizzo Ip ad un Pc?
thanks in advance!
Tara!

 [Tara] ha chiesto:
 ...è possibile da codice impostare e\o cambiare l'indirizzo Ip ad un Pc?
[uranio] ha risposto:
mmm.credo proprio di no, Purtroppo!! :(
e io concludo che, evidentemente, il pannello di controllo di windows
scolpisce con martello e scalpello l'indirizzo ip sulla scheda di rete...
(non sapere come una cosa può essere fatta non coincide con il fatto che
essa sia impossibile)
Comunque neanche io so come fare...
Salutoni
Sergio



Se Win2k, ripropongo pari pari (post del 5/10/2002):
Se ti servisse solo "richiamare" una configurazione già nota
potresti implementare i comandi netshell.
Con: netsh -c interface dump >nomefile.txt
salvi l'attuale configurazione.
Con: netsh -f nomefile.txt richiami la configurazione voluta.
Ciao
@Pino

forse uranio intendeva l'IP assegnato dal provider durante una connessione
ad Internet.......questa evidentemente no.....
ma l'IP assegnato per una rete LAN certo che sě, anche se effettivamente
neanche io non saprei come fare, probabilmente c'č qualche API apposta:
suggerisco di dare un'occhiata al sito comune, oppure ad 
www.allapi.net
,
sicuramente c'č qualcosa....
good coding!!!
--
Damiani Liborio Igor
ig...@igordamiani.it
 - 
dam...@italiainfiera.it
 - 
idam...@hotmail.com
http://www.igordamiani.it
ICQ : 11847262

...è possibile da codice impostare e\o cambiare l'indirizzo Ip ad un Pc?
Se il pc e' un NT 4 Sp4 o successivo puoi aggiungere un riferimento
alla libreria WMI.
Con l'esempio qui sotto mi sono cambiato l'indirizzo IP al volo
su una delle schede di rete installate.
<codice>
Option Explicit
'   ref to Microsoft WMI Scripting Library
Public Sub Main()
    Dim adapters As SWbemObjectSet
    Dim adapter As SWbemObject
    Dim ipAddr As Variant
    Dim netmask As Variant
 
    Set adapters =
GetObject("winmgmts:{impersonationLevel=impersonate}"). _
InstancesOf("Win32_NetworkAdapterConfiguration")
 
    For Each adapter In adapters
 
        If (Trim$(adapter.Description) = "NDIS 5.0 driver") Then
 
            ipAddr = Array("192.168.99.99")
            netmask = Array("255.255.255.0")
            adapter.EnableStatic ipAddr, netmask
 
            Exit For
        End If
 
    Next adapter
 
End Sub
</codice>
Ovviamente lo stesso lavoro si puo' fare con uno script.
-- 
ciao, hal

alla libreria WMI.
Bello!
Curiosità: chi/cosa installa la libreria WMI?
Sul 2K ce l'ho, (anche se pare che l'esempio non funga su questo SO),
ma su NT4 no (sp6 + VB6 sp4).

Sul 2K ce l'ho, (anche se pare che l'esempio non funga su questo SO),
No, funziona eccome, l'ho appena fatto girare proprio su un 2K :-)
Anzi, ecco la versione script:
<SetNetworkAddress.js>
main();
/* ------------------------------------ */
function trim(s) 
{
	return String(s).replace(/^\s*|\s*$/g,"");
}
function main()
{
	var adapters, adapter;
	adapters = new Enumerator(
			GetObject(
"winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_NetworkAdapterConfiguration"
			)
			);   
	for (;!adapters.atEnd();adapters.moveNext()) 
	{
		adapter = adapters.item();
		if (trim(adapter.Description)== "NDIS 5.0 driver")
		{
			var ipAddr = new Array("192.168.0.1");
            var netmask = new Array("255.255.255.0");
            adapter.EnableStatic (ipAddr, netmask);
 
            break;
		}
 
	}
	WScript.Quit();
}
</SetNetworkAddress.js>
Ah, naturalmente cerca di identificare con precisione la scheda
di rete su cui vuoi intervenire (puoi basarti sulle proprieta'
MACAddress, ServiceName o altro: sono i campi della classe
Win32_NetworkAdapterConfiguration:
<codice>
class Win32_NetworkAdapterConfiguration : CIM_Setting
{
  boolean ArpAlwaysSourceRoute;
  boolean ArpUseEtherSNAP;
  string Caption;
  string DatabasePath;
  boolean DeadGWDetectEnabled;
  string DefaultIPGateway[];
  uint8 DefaultTOS;
  uint8 DefaultTTL;
  string Description;
  boolean DHCPEnabled;
  datetime DHCPLeaseExpires;
  datetime DHCPLeaseObtained;
  string DHCPServer;
  string DNSDomain;
  string DNSDomainSuffixSearchOrder[];
  boolean DNSEnabledForWINSResolution;
  string DNSHostName;
  string DNSServerSearchOrder[];
  boolean DomainDNSRegistrationEnabled;
  uint32 ForwardBufferMemory;
  boolean FullDNSRegistrationEnabled;
  uint16 GatewayCostMetric[];
  uint8 IGMPLevel;
  uint32 Index;
  string IPAddress[];
  uint32 IPConnectionMetric;
  boolean IPEnabled;
  boolean IPFilterSecurityEnabled;
  boolean IPPortSecurityEnabled;
  string IPSecPermitIPProtocols[];
  string IPSecPermitTCPPorts[];
  string IPSecPermitUDPPorts[];
  string IPSubnet[];
  boolean IPUseZeroBroadcast;
  string IPXAddress;
  boolean IPXEnabled;
  uint32 IPXFrameType[];
  uint32 IPXMediaType;
  string IPXNetworkNumber[];
  string IPXVirtualNetNumber;
  uint32 KeepAliveInterval;
  uint32 KeepAliveTime;
  string MACAddress;
  uint32 MTU;
  uint32 NumForwardPackets;
  boolean PMTUBHDetectEnabled;
  boolean PMTUDiscoveryEnabled;
  string ServiceName;
  string SettingID;
  uint32 TcpipNetbiosOptions;
  uint32 TcpMaxConnectRetransmissions;
  uint32 TcpMaxDataRetransmissions;
  uint32 TcpNumConnections;
  boolean TcpUseRFC1122UrgentPointer;
  uint16 TcpWindowSize;
  boolean WINSEnableLMHostsLookup;
  string WINSHostLookupFile;
  string WINSPrimaryServer;
  string WINSScopeID;
  string WINSSecondaryServer;
};
</codice>
-- 
hth, hal

Grazie!


...com'è ovvio che sia. Me ne hai fatta scoprire un'altra (WMI). Altro
mare di roba da studiare. ;-)
Continua però a non funzionarmi, ma non mi sono applicato molto.
Tra l'altro, devo avere il 2k bacato, poichè vb mi consente i
riferimenti solo al .tlb.
Riproverò con calma, ...per ora mi scarico anche i Tools SDK.
Ciao
@Pino