Título: Referencia a objeto no establecida como instancia de un objeto. Ayuda.
Publicado por: 70N1 en 6 Agosto 2010, 16:41 pm
Dim res As RegistryKey = Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Control\Network\" & s & resultado, False)
Dim ase As String For Each ase In res.GetValueNames() <---- aki da el error
MsgBox(ase) Next ase
Título: Re: Referencia a objeto no establecida como instancia de un objeto. Ayuda.
Publicado por: Novlucker en 6 Agosto 2010, 17:09 pm
Has revisado el valor de res, seguro que no esta en NULL? :rolleyes:
Saludos
Título: Re: Referencia a objeto no establecida como instancia de un objeto. Ayuda.
Publicado por: 70N1 en 6 Agosto 2010, 18:07 pm
Tienes razon... es null. Pero ahora como hago para detectar si es null para seguir con el for?
Título: Re: Referencia a objeto no establecida como instancia de un objeto. Ayuda.
Publicado por: Novlucker en 6 Agosto 2010, 18:59 pm
Con algo como ... if(res is nothing) then
Saludos
Título: Re: Referencia a objeto no establecida como instancia de un objeto. Ayuda.
Publicado por: [D4N93R] en 6 Agosto 2010, 19:16 pm
Aparte de eso puede lanzarte otras Exceptions, como ObjectDisposedException o SecurityException, entonces para esos casos puedes hacer: Try Dim key As String key = "SYSTEM\CurrentControlSet\Control\Network\" & s & resultado Dim res As RegistryKey = Registry.LocalMachine.OpenSubKey(key, False) If(res is nothing) then return New Exception("La clave "& key &" no existe") End If Dim ase As String For Each ase In res.GetValueNames() <---- aki da el error MsgBox(ase) Next ase Catch disposedex As ObjectDisposedException Código en caso de que pase ésto Catch secEx as SecurityException Código en caso de que pase ésto End Try
Perdona si tengo algún error, no me sé muy bien la sintaxis de VB.Net Saludos!
Título: Re: Referencia a objeto no establecida como instancia de un objeto. Ayuda.
Publicado por: 70N1 en 6 Agosto 2010, 19:34 pm
Esto es lo que e hecho por ahora. va muy bien. Imports System Imports Microsoft.Win32 Class Reg Public Shared Sub Main() Dim rk As RegistryKey = Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Control\Network", False) PrintKeys(rk) Console.ReadKey() End Sub Public Shared Sub PrintKeys(ByVal rkey As RegistryKey) Dim names As String() = rkey.GetSubKeyNames() Dim i As Integer = 0 Dim s As String For Each s In names Dim registro As RegistryKey = Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Control\Network\" & s, False) Dim e For Each e In registro.GetSubKeyNames() 'MsgBox("SYSTEM\CurrentControlSet\Control\Network\" & s & e) Dim res As RegistryKey = Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Control\Network\" & s & "\" & e, False) Dim ase As String For Each ase In res.GetSubKeyNames() MsgBox("SYSTEM\CurrentControlSet\Control\Network\" & s & "\" & e & "\" & ase) Dim res1 As RegistryKey = Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Control\Network\" & s & "\" & e & "\" & ase, False) Dim ase1 As String For Each ase1 In res1.GetValueNames() If ase1 = "PnpInstanceID" Then Console.WriteLine(ase1) End If Next ase1 Next ase Next e Next s End Sub End Class
Ahora me falta ver el contenido de esa clave y compararla con la que tengo.
Título: Re: Referencia a objeto no establecida como instancia de un objeto. Ayuda.
Publicado por: raul338 en 6 Agosto 2010, 22:48 pm
Ahora me falta ver el contenido de esa clave y compararla con la que tengo.
Hice este cambio en el code: Public Shared Sub PrintKeys(ByVal rkey As RegistryKey) '............ For Each ase In res.GetSubKeyNames() MsgBox("SYSTEM\CurrentControlSet\Control\Network\" & s & "\" & e & "\" & ase) Dim res1 As RegistryKey = Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Control\Network\" & s & "\" & e & "\" & ase, False) Dim ase1 As String ' Lo puedes guardar en un string para comparar Console.WriteLine(res1.GetValue("PnpInstanceID")) Next ase '... End Sub
|