Página 1 de 1

Permisos de Control Total en Registro (Ayuda)

Publicado: 13 Feb 2012, 23:52
por melvinhn
Pues resulta que estoy haciendo un truquito para Activar o Desactivar la Barra de Idiomas en la barra de tareas
Tengo el siguiente codigo hecho

Código: Seleccionar todo

;Derechos variantes
$NombrePrograma = "Barra de idioma" ;Nombre del programa
$Comments = "© Copyright 1984-2012 All Rights Reserved" ;No modificar
$DisplayVersion = "1.0.0.0" ;Version del programa
$Publisher = "Softcom Systems Incorporated" ;No modificar

Inicio()
Intalar()
Fin()

Func Intalar() ;Contiene los programas a intalar
$BarraIdioma = RegRead("HKEY_CLASSES_ROOT\CLSID\{540D8A8B-1C3F-4E32-8132-530F6A502090}", "EnableToolbarLang")
If $BarraIdioma = "1" Then
RegDelete("HKEY_CLASSES_ROOT\CLSID\{540D8A8B-1C3F-4E32-8132-530F6A502090}")
TrayTip("","Desactivando"&@LF&$NombrePrograma&" "&$DisplayVersion&@LF&$Comments,0)
Sleep(3000)
Else
Sistema()
TrayTip("","Activando"&@LF&$NombrePrograma&" "&$DisplayVersion&@LF&$Comments,0)
Sleep(3000)
EndIf
EndFunc

Func Inicio()
TrayTip("","Configurando"&@LF&$NombrePrograma&" "&$DisplayVersion&@LF&$Comments,0)
Sleep(3000)
EndFunc

Func Fin()
TrayTip("","Finalizo"&@LF&$NombrePrograma&" "&$DisplayVersion&@LF&$Comments,0)
Sleep(3000)
EndFunc

Func XP()
RegWrite("HKEY_CLASSES_ROOT\CLSID\{540D8A8B-1C3F-4E32-8132-530F6A502090}", "EnableToolbarLang", "REG_DWORD", "1")
RegWrite("HKEY_CLASSES_ROOT\CLSID\{540D8A8B-1C3F-4E32-8132-530F6A502090}", "", "REG_SZ", "Barra de idioma")
RegWrite("HKEY_CLASSES_ROOT\CLSID\{540D8A8B-1C3F-4E32-8132-530F6A502090}", "MenuTextPUI", "REG_EXPAND_SZ", "@%SystemRoot%\System32\msutb.dll,-325")
RegWrite("HKEY_CLASSES_ROOT\CLSID\{540D8A8B-1C3F-4E32-8132-530F6A502090}\InProcServer32", "", "REG_EXPAND_SZ", "%SystemRoot%\System32\msutb.dll")
RegWrite("HKEY_CLASSES_ROOT\CLSID\{540D8A8B-1C3F-4E32-8132-530F6A502090}\InProcServer32", "ThreadingModel", "REG_SZ", "Apartment")
EndFunc

Func SEVEN()
RegWrite("HKEY_CLASSES_ROOT\CLSID\{540D8A8B-1C3F-4E32-8132-530F6A502090}", "EnableToolbarLang", "REG_DWORD", "1")
RegWrite("HKEY_CLASSES_ROOT\CLSID\{540D8A8B-1C3F-4E32-8132-530F6A502090}", "", "REG_SZ", "Language bar")
RegWrite("HKEY_CLASSES_ROOT\CLSID\{540D8A8B-1C3F-4E32-8132-530F6A502090}", "MenuTextPUI", "REG_EXPAND_SZ", "@%SystemRoot%\System32\msutb.dll,-328")
RegWrite("HKEY_CLASSES_ROOT\CLSID\{540D8A8B-1C3F-4E32-8132-530F6A502090}\InProcServer32", "", "REG_EXPAND_SZ", "%SystemRoot%\System32\msutb.dll")
RegWrite("HKEY_CLASSES_ROOT\CLSID\{540D8A8B-1C3F-4E32-8132-530F6A502090}\InProcServer32", "ThreadingModel", "REG_SZ", "Apartment")
EndFunc

Func Sistema()
If @OSVersion = "WIN_XP" Then
XP()
Else
SEVEN()
EndIf
EndFunc
Recalco que el Windows XP me va muy bien y me funciona el codigo

pero he aqui el problema en Windows Seven
RegWrite("HKEY_CLASSES_ROOT\CLSID\{540D8A8B-1C3F-4E32-8132-530F6A502090}", "EnableToolbarLang", "REG_DWORD", "1")
no puedo escribir un registro en la siguiente ruta ya que tiene permisos
La pregunta seria como puede tener los permisos requeridos para esa dicha ruta antes de escribir en esa cadena...
Imagen de Registro con la cadena que no puedo escribir datos...
Imagen de Registro con la cadena que no puedo escribir datos...
Regedit.png (141.14 KiB) Visto 994 veces

Re: Permisos de Control Total en Registro (Ayuda)

Publicado: 14 Feb 2012, 04:00
por BasicOs
Hola, me imagino que shellexecute() con un fichero.reg no te funciona tampoco, o haciendo doble click sobre el fichero para chequear.

Puedes logearte como Admin #RequireAdmin en el momento,
o bien login automático con RunAs() y ejecutando un bat con el .reg???.

XP Con los servicePack puede que haga un efecto parecido al vista y al 7??
Tambien alguna utilidad externa de autoconfiguración en modo batch puede ayudar para modificar algunas claves.
Salu22:)