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
Has revisado el valor de res, seguro que no esta en NULL? :rolleyes:
Saludos
Tienes razon... es null.
Pero ahora como hago para detectar si es null para seguir con el for?
Con algo como ...
if(res is nothing) then
Saludos
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!
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.
Cita de: 70N1 en 6 Agosto 2010, 19:34 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