Quiz: perchè NullReferenceException ?
Questo metodo NetworkingSettings() viene eseguito all’avvio di un’applicazione su Pocket PC 2003 su cui è installato il Compact Framework 2.0. Lo scopo, come si vede dal codice che ho scritto, è quello di creare nel registro di configurazione del dispositivo una certa chiave dentro HKLMCommTcpIphosts. Purtroppo ho inserito queste righe nella versione finale del software, versione che è stata distribuita su una ventina di palmati Pocket PC, con il risultato di scatenare un’eccezione NullReferenceException non gestita.
1 public void NetworkingSettings() 2 { 3 RegistryKey key = Registry.LocalMachine.OpenSubKey(@"CommTcpIphosts ome_server"); 4 5 if (key == null) 6 { 7 key = Registry.LocalMachine.OpenSubKey(@"CommTcpIphosts", true); 8 key = key.CreateSubKey("nome_server"); 9 10 byte[] ip = new byte[4] 11 { 12 150, 80, 10, 196 13 }; 14 15 key.SetValue("ipaddr", ip, RegistryValueKind.Binary); 16 key.Close(); 17 } 18 }
Rispetto al codice in produzione ho cambiato alcune cose minimali: innanzitutto nome_server è un dominio valido; seconda cosa, i quattro bytes del byte[] hanno valori differenti. La mia domanda è: secondo voi, dove si scatena l’eccezione di cui sopra? Una volta individuato il punto (che io già conosco), la domanda successiva è: perchè?
Technorati Tags: Registry Compact Framework