Saltar al contenido

Modificar entrada registro de windows


albersil

Recommended Posts

publicado

Buenas, me estoy devanando los sesos para conseguir lo que quiero hacer, pero mis entendederas no dan para tanto, así es que solicito humíldemente vuestra ayuda. La cuestión es que quiero quitar las flechas de los enlaces directos de windows, pero no tengo acceso al regedit, así es que la única solución que se me antoja es hacerlo desde VBA con EXCEL, ya que un fichero EXCEL con VBA que tengo con otro código sí ha conseguido modificar el registro, pero en otra rama. Bueno al grano, se que las flechas se eleminan cambiando la entrada IsShortcut por xsShortcut , en las ramas HKEY_CLASSES_ROOT\lnkfile y HKEY_CLASSES_ROOT\piffile, pero no se hacerlo con VBA.

Mediante un fichero con extensión REG con el siguiente contenido se hace, pero como ya digo, en el ordenador de la oficina no tengo acceso con este tipo de ficheros y he de hacerlo a través de EXCEL y VBA.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\lnkfile]

"IsShortcut"=-

"xsShortcut"=""

[HKEY_CLASSES_ROOT\piffile]

"IsShortcut"=-

"xsShortcut"=""

Gracias de antemano por vuestra ayuda. Salu2.

publicado

Bueno me contesto yo mismo. Probando, probando, he conseguido que funcione, aunque seguramente, el código será manifiestamente mejorable, pero no doy más de mi. Este es el código que va en un módulo.

Sub quitar_flechas()
Dim myRegKey As String
Dim myValue As String
Dim Ws, clave1, clave2

myRegKey = "HKEY_CLASSES_ROOT\lnkfile\xsShortcut"
myValue = ""
RegKeySave myRegKey, myValue

myRegKey = "HKEY_CLASSES_ROOT\piffile\xsShortcut"
myValue = ""
RegKeySave myRegKey, myValue

Set Ws = CreateObject("WScript.Shell")
clave1 = Ws.RegDelete("HKEY_CLASSES_ROOT\lnkfile\IsShortcut")
clave2 = Ws.RegDelete("HKEY_CLASSES_ROOT\piffile\IsShortcut")
Set Ws = Nothing

End Sub

Sub RegKeySave(i_RegKey As String, i_Value As String, Optional i_Type As String = "REG_SZ")
Dim myWS As Object
Set myWS = CreateObject("WScript.Shell")
myWS.RegWrite i_RegKey, i_Value, i_Type
End Sub

Sub poner_flechas()
Dim myRegKey As String
Dim myValue As String
Dim Ws, clave1, clave2
myRegKey = "HKEY_CLASSES_ROOT\lnkfile\IsShortcut"
myValue = ""
RegKeySave myRegKey, myValue

myRegKey = "HKEY_CLASSES_ROOT\piffile\IsShortcut"
myValue = ""
RegKeySave myRegKey, myValue

Set Ws = CreateObject("WScript.Shell")
clave1 = Ws.RegDelete("HKEY_CLASSES_ROOT\lnkfile\xsShortcut")
clave2 = Ws.RegDelete("HKEY_CLASSES_ROOT\piffile\xsShortcut")
Set Ws = Nothing

End Sub
[/CODE]

Ya solo quedaría implementar alguna rutina para que detectara cuando están habilitadas o deshabilitadas, ya que si ejecutas el procedimiento de quitar_flechas y están ya quitadas, sale un error. Lo mismo ocurre al contrario, si se ejecuta el procedimiento poner_flechas y estas ya están puestas, también sale el error. Seguiré probando, pero agradecería ayuda sobre esto, así como para mejorar el código. Gracias y Salu2.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.