[VB] [Registro ] Modificar valor DWORD (Solucionado)

Iniciado por FranciskoAsdf, 14 Junio 2014, 17:40 PM

0 Miembros y 2 Visitantes están viendo este tema.

FranciskoAsdf

Estimados, necesito su ayuda de nuevo!

Necesito saber como modificar un valor DWORD en el registro, el valor cambia de 1  a  0, he buscado pero NO ENTIENDO NADA DE ESTO, y necesito que me guíen o ayuden directamente xD por favor xD.

tengo la ruta dónde está la clave y el nombre.

["HKEY_CURRENT_USER\Software\Microsoft\Office\" & ExcelVersion & "\Excel\Security\" ]
y la clave es AccessVBOM.

por favor si alguien me puede ayudar,  es lo único que me falta para terminar mi programa.

gracias de ante mano!

Saludos!
Asdf debería ser algún tipo de función.

XresH

Esto es sencillo te dejo una guia para que lo tengas bien explicado, cualquier duda comentala que te ayudo ;)


http://www.ots.ac.cr/tech/node/315


Saludos espero sirva.
[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<

FranciskoAsdf

Hola, muchas gracias por tu respuesta, super bien explicado -y lo mejor- en pocas lineas xD

Pero como no todo puede ser perfecto, me da un error en tiempo de ejecución..


Ahora solo intento saber que valor tiene la clave para modificarla si es necesario o no.

Y lo hice así:

Código (vb) [Seleccionar]

Private Sub ExcelAccessVBOM()
ExcelVersion = ExcelApp.Version
Set FakeRegedit = CreateObject("Wscript.Shell")
ValorReg = FakeRegedit.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\" & ExcelVersion & "\Excel\Security")
MsgBox ValorReg
Set FakeRegedit = Nothing
End Sub


Y la llamo desde Form_Load(), pero al momento de cargar me sale el siguiente error:

"No se pudo abrir la clave del registro "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security" para leerla"

Revise la clave varias veces, e incluso la copie directo del Registro, pero nada. Probé cargando directamente la función desde el Form_Load(), pero me da el mismo error.

E de agregar que tengo todos los permisos necesarios para leer y/o modificar el registro.

Si fueras tan amable o alguien mas me guiarme porfavor xD.

EDIT: El tipo de variable de ValorReg es Integer.
Asdf debería ser algún tipo de función.

FranciskoAsdf

Lo hice, pero no de esa forma, si no, usando API, por lo menos en mi pc funcionó xD.

Dejo acá como lo hice :D!

Código (vb) [Seleccionar]

Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey As Long) As Long
Private Const HKEY_CURRENT_USER = &H80000001
Private Const REG_DWORD = 4
Dim nBufferKey As Long
Dim nVal As Long


Código (vb) [Seleccionar]

Private Sub Form_Load()
    ExcelVersion = ExcelApp.Version
    nVal = 1
    RegOpenKey HKEY_CURRENT_USER, "Software\Microsoft\Office\" & ExcelVersion & "\Excel\Security", nBufferKey
    RegSetValueEx nBufferKey, "AccessVBOM", 0, REG_DWORD, nVal, Len(nVal)
    'MsgBox "Sandbox Mode Changed", vbInformation, "Sandbox"
    RegCloseKey nBufferKey
   mibd.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataAndStuff\cllbd.mdb;Persist Security Info=False"
   PB1.Min = 0
   Open App.Path & "\DataAndStuff\OrdenPlanillaInventario.txt" For Input As #1
   Do Until EOF(1)
      Line Input #1, Linea
      Total = Total + Linea + vbCrLf
   Loop
   Close #1
   Label1.Caption = "NOTA IMPORTANTE:" & vbNewLine & "El archivo debe ser generado como ""HOJA CALCULO COSTE"" o el sistema dará ERROR."""
   'ExcelAccessVBOM
End Sub


Saludos, y gracias!
Asdf debería ser algún tipo de función.