none
registros DWORD en VB.NET RRS feed

  • Pregunta

  • hola buenas tardes a todos gracias por su ayuda

    me gustaria saber como puedo verificar si existe un registro DWORD

    si existe, comprobar el valor del registro DWORD

    y si no existe crear un nuevo registro DWORD

    ya eh buscado muchos ejemplosy no se por que no me funcionan bien

    si pueden evitar poner enlaces y mejor un ejemplo simple se los agradeceria o si no pues si el enlace viene explicado con manzanas pues tambien esta bien gracias


    • Editado RHCRD martes, 26 de enero de 2016 0:07
    lunes, 25 de enero de 2016 20:13

Respuestas

  • al fin pude hacer lo que queria

    este es el codigo para resolver el problema de visualizacion incorrecta del WebBrowser en VB.NET agregando los valores al registro automaticamente

    Imports Microsoft.Win32
    Public Class Form1
        Dim subclave As String = "Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\"
        
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            VerificarRegistroWebBrowser()
        End Sub
    
        Sub VerificarRegistroWebBrowser()
            'intentamos abrir la subclave
            Dim clave As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default).OpenSubKey(subclave, True)
            If IsNothing(clave) Then
                MsgBox("No se encontro la subclave FEATURE_BROWSER_EMULATION en el registro de Windows")
            Else
                If IsNothing(clave.GetValue("*")) Then 'si el valor "*" no existe lo creamos 
                    clave.SetValue("*", GetWebBrowserRegistryValue(WebBrowser1), RegistryValueKind.DWord)
                Else
                    If clave.GetValue("*").ToString <> Val(GetWebBrowserRegistryValue(WebBrowser1)).ToString Then 'si existe "*" pero el valor es diferente, lo modificamos
                        clave.SetValue("*", GetWebBrowserRegistryValue(WebBrowser1), RegistryValueKind.DWord)
                    End If
                End If
            End If
        End Sub
    
        Function GetWebBrowserRegistryValue(ByVal WebBrowser As WebBrowser) As String
            Dim ValReg As String = ""
            'obtenemos el valor correspondiente del webbrowser (solo para IExplorer 7,8,9,10,11)
            Select Case WebBrowser.Version.Major
                Case 11
                    ValReg = "00011000"
                Case 10
                    ValReg = "00010000"
                Case 9
                    ValReg = "00009000"
                Case 8
                    ValReg = "00008000"
                Case 7
                    ValReg = "00007000"
            End Select
            Return ValReg
        End Function
    End Class

    • Marcado como respuesta RHCRD jueves, 28 de enero de 2016 0:10
    jueves, 28 de enero de 2016 0:06

Todas las respuestas

  • puedes mostrar qué llevas implementado? Lo digo porque dices que no te sale del todo bien.

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 26 de enero de 2016 1:50
  •     Dim valreg As String
        Dim subclave As String = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"
        Dim clave As RegistryKey
        Sub verificar_registros()
            Select Case WebBrowser1.Version.Major
                Case 11
                    valreg = "00011000"
                Case 10
                    valreg = "00010000"
                Case 9
                    valreg = "00009000"
                Case 8
                    valreg = "00008000"
                Case 7
                    valreg = "00007000"
            End Select
    
            Dim cl1 As RegistryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\" & My.Application.Info.AssemblyName & ".exe", True)
            If IsNothing(cl1) Then
                clave = Registry.CurrentUser.OpenSubKey(subclave, True)
                clave.SetValue(subclave & "\" & My.Application.Info.AssemblyName & ".exe", valreg, RegistryValueKind.DWord)
                My.Computer.Registry.SetValue(subclave & "\" & My.Application.Info.AssemblyName & ".exe", valreg, RegistryValueKind.DWord)
            Else
                If clave.GetValue(My.Application.Info.AssemblyName & ".exe") <> valreg Then
                    My.Computer.Registry.SetValue(subclave & "\" & My.Application.Info.AssemblyName & ".exe", valreg, RegistryValueKind.DWord)
                End If
            End If
        End Sub
        Private Sub trazaturuta_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            verificar_registros()
        End Sub

    martes, 26 de enero de 2016 15:29
  • Primero deberías valildar que cuando "abres" la clave, tu variable no es nula

    clave = Registry.CurrentUser.OpenSubKey(subclave, True)
    If clave IsNot Nothing Then
    	clave.SetValue(subclave & "\" & My.Application.Info.AssemblyName & ".exe", valreg, RegistryValueKind.DWord)
    	My.Computer.Registry.SetValue(subclave & "\" & My.Application.Info.AssemblyName & ".exe", valreg, RegistryValueKind.DWord)
    End If	 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 27 de enero de 2016 16:25
  • Puede ver el contenido de 

    subclave & "\" & My.Application.Info.AssemblyName & ".exe"

    Y verificar que existe tu clave en el registro? Si no existe te recomiendo que la crees 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 27 de enero de 2016 16:26
  • pero como se supone que la creo

    yo pense que en esta parte del codigo

    If IsNothing(cl1) Then
                clave = Registry.CurrentUser.OpenSubKey(subclave, True)
                clave.SetValue(subclave & "\" & My.Application.Info.AssemblyName & ".exe", valreg, RegistryValueKind.DWord)
                My.Computer.Registry.SetValue(subclave & "\" & My.Application.Info.AssemblyName & ".exe", valreg, RegistryValueKind.DWord)
            Else

    comprobaba que no existia la clave y ahi mismo la creaba

    tampoco le entiendo mucho al codigo

    clave = Registry.CurrentUser.OpenSubKey(subclave, True) If clave IsNot Nothing Then 'si no es nula clave.SetValue(subclave & "\" & My.Application.Info.AssemblyName & ".exe", valreg, RegistryValueKind.DWord)'le seteo un valor?

    'pero si no es nula no se supone que ya tiene un valor? o como verifico que la clave ya tiene un valor y es igual al que le quiero setear? My.Computer.Registry.SetValue(subclave & "\" & My.Application.Info.AssemblyName & ".exe", valreg, RegistryValueKind.DWord) End If

    • Editado RHCRD miércoles, 27 de enero de 2016 17:07
    miércoles, 27 de enero de 2016 17:02
  • Para crear subkeys debes usar CreateSubKey
    https://msdn.microsoft.com/en-us/library/microsoft.win32.registrykey.createsubkey(v=vs.110).aspx


    echa un ojo a este enlace tambien https://msdn.microsoft.com/es-es/library/h5e7chcf.aspx


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 27 de enero de 2016 17:23
  • se que has puesto que no te gusta que te pongan enlaces. Hasta mañana no tendré un equipo para ponerte el código. Sorry

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 27 de enero de 2016 17:24
  • no es que no me guste, l oque pasa es que los eh leido y me cuesta trabajo entenderlos, y ese de createsubkey no estoy seguro pero me pareciera que solo es para string, y si creo una clave del tipo string no me funciona, necesito crear una subclave del tipo DWORD. si estoy equivocado en lo que estoy diciendo por favor hasmelo saber.
    miércoles, 27 de enero de 2016 17:39
  • al fin pude hacer lo que queria

    este es el codigo para resolver el problema de visualizacion incorrecta del WebBrowser en VB.NET agregando los valores al registro automaticamente

    Imports Microsoft.Win32
    Public Class Form1
        Dim subclave As String = "Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\"
        
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            VerificarRegistroWebBrowser()
        End Sub
    
        Sub VerificarRegistroWebBrowser()
            'intentamos abrir la subclave
            Dim clave As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default).OpenSubKey(subclave, True)
            If IsNothing(clave) Then
                MsgBox("No se encontro la subclave FEATURE_BROWSER_EMULATION en el registro de Windows")
            Else
                If IsNothing(clave.GetValue("*")) Then 'si el valor "*" no existe lo creamos 
                    clave.SetValue("*", GetWebBrowserRegistryValue(WebBrowser1), RegistryValueKind.DWord)
                Else
                    If clave.GetValue("*").ToString <> Val(GetWebBrowserRegistryValue(WebBrowser1)).ToString Then 'si existe "*" pero el valor es diferente, lo modificamos
                        clave.SetValue("*", GetWebBrowserRegistryValue(WebBrowser1), RegistryValueKind.DWord)
                    End If
                End If
            End If
        End Sub
    
        Function GetWebBrowserRegistryValue(ByVal WebBrowser As WebBrowser) As String
            Dim ValReg As String = ""
            'obtenemos el valor correspondiente del webbrowser (solo para IExplorer 7,8,9,10,11)
            Select Case WebBrowser.Version.Major
                Case 11
                    ValReg = "00011000"
                Case 10
                    ValReg = "00010000"
                Case 9
                    ValReg = "00009000"
                Case 8
                    ValReg = "00008000"
                Case 7
                    ValReg = "00007000"
            End Select
            Return ValReg
        End Function
    End Class

    • Marcado como respuesta RHCRD jueves, 28 de enero de 2016 0:10
    jueves, 28 de enero de 2016 0:06