elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Referencia a objeto no establecida como instancia de un objeto. Ayuda.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Referencia a objeto no establecida como instancia de un objeto. Ayuda.  (Leído 10,557 veces)
70N1


Desconectado Desconectado

Mensajes: 355


Ver Perfil
Referencia a objeto no establecida como instancia de un objeto. Ayuda.
« en: 6 Agosto 2010, 16:41 pm »

Código:
  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



En línea

70N1
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Referencia a objeto no establecida como instancia de un objeto. Ayuda.
« Respuesta #1 en: 6 Agosto 2010, 17:09 pm »

Has revisado el valor de res, seguro que no esta en NULL? :rolleyes:

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
70N1


Desconectado Desconectado

Mensajes: 355


Ver Perfil
Re: Referencia a objeto no establecida como instancia de un objeto. Ayuda.
« Respuesta #2 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?
En línea

70N1
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Referencia a objeto no establecida como instancia de un objeto. Ayuda.
« Respuesta #3 en: 6 Agosto 2010, 18:59 pm »

Con algo como ...
Código
  1. if(res is nothing) then

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Referencia a objeto no establecida como instancia de un objeto. Ayuda.
« Respuesta #4 en: 6 Agosto 2010, 19:16 pm »

Aparte de eso puede lanzarte otras Exceptions, como ObjectDisposedException o SecurityException, entonces para esos casos puedes hacer:
Código
  1. Try
  2.   Dim key As String
  3.   key = "SYSTEM\CurrentControlSet\Control\Network\" & s & resultado
  4.   Dim res As RegistryKey = Registry.LocalMachine.OpenSubKey(key, False)
  5.   If(res is nothing) then
  6.       return New Exception("La clave "& key &" no existe")
  7.   End If
  8.   Dim ase As String
  9.  
  10.   For Each ase In res.GetValueNames() <---- aki da el error
  11.        MsgBox(ase)
  12.   Next ase
  13.  
  14. Catch disposedex As ObjectDisposedException
  15. Código en caso de que pase ésto
  16.  
  17. Catch secEx as SecurityException
  18.   Código en caso de que pase ésto
  19.  
  20. End Try
  21.  

Perdona si tengo algún error, no me sé muy bien la sintaxis de VB.Net

Saludos!
« Última modificación: 6 Agosto 2010, 19:18 pm por [D4N93R] » En línea

70N1


Desconectado Desconectado

Mensajes: 355


Ver Perfil
Re: Referencia a objeto no establecida como instancia de un objeto. Ayuda.
« Respuesta #5 en: 6 Agosto 2010, 19:34 pm »

Esto es lo que e hecho por ahora. va muy bien.
Código
  1. Imports System
  2. Imports Microsoft.Win32
  3.  
  4. Class Reg
  5.  
  6.  
  7.    Public Shared Sub Main()
  8.        Dim rk As RegistryKey = Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Control\Network", False)
  9.        PrintKeys(rk)
  10.        Console.ReadKey()
  11.    End Sub
  12.  
  13.  
  14.    Public Shared Sub PrintKeys(ByVal rkey As RegistryKey)
  15.  
  16.        Dim names As String() = rkey.GetSubKeyNames()
  17.        Dim i As Integer = 0
  18.        Dim s As String
  19.        For Each s In names
  20.  
  21.            Dim registro As RegistryKey = Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Control\Network\" & s, False)
  22.  
  23.            Dim e
  24.  
  25.            For Each e In registro.GetSubKeyNames()
  26.  
  27.                'MsgBox("SYSTEM\CurrentControlSet\Control\Network\" & s & e)
  28.  
  29.                Dim res As RegistryKey = Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Control\Network\" & s & "\" & e, False)
  30.                Dim ase As String
  31.  
  32.                For Each ase In res.GetSubKeyNames()
  33.                    MsgBox("SYSTEM\CurrentControlSet\Control\Network\" & s & "\" & e & "\" & ase)
  34.                    Dim res1 As RegistryKey = Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Control\Network\" & s & "\" & e & "\" & ase, False)
  35.                    Dim ase1 As String
  36.  
  37.                    For Each ase1 In res1.GetValueNames()
  38.  
  39.                        If ase1 = "PnpInstanceID" Then
  40.                            Console.WriteLine(ase1)
  41.                        End If
  42.  
  43.                    Next ase1
  44.                Next ase
  45.            Next e
  46.        Next s
  47.    End Sub
  48. End Class
  49.  

Ahora me falta ver el contenido de esa clave y compararla con la que tengo.
« Última modificación: 6 Agosto 2010, 22:41 pm por [D4N93R] » En línea

70N1
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Referencia a objeto no establecida como instancia de un objeto. Ayuda.
« Respuesta #6 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:
Código
  1. Public Shared Sub PrintKeys(ByVal rkey As RegistryKey)
  2.   '............
  3.   For Each ase In res.GetSubKeyNames()
  4.        MsgBox("SYSTEM\CurrentControlSet\Control\Network\" & s & "\" & e & "\" & ase)
  5.        Dim res1 As RegistryKey = Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Control\Network\" & s & "\" & e & "\" & ase, False)
  6.        Dim ase1 As String
  7.  
  8.        ' Lo puedes guardar en un string para comparar
  9.        Console.WriteLine(res1.GetValue("PnpInstanceID"))
  10.        Next ase
  11.        '...
  12. End Sub
  13.  
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines