Página 1 de 1

[RESUELTO] ¿register_set no funciona?

Publicado: 5 de junio de 2019 - 11:39
por renaud.counhaye
Hola a todos,

Actualmente en servidores
Versión del servidor WAPT: 1.7.4
Versión del agente WAPT: 1.7.4.6077
Versión de configuración de WAPT: 1.7.4.6077
Versión de implementación de WAPT: 1.7.4.6077
Estado de la base de datos: OK (1.7.4.0)

Tengo este nuevo script para bloquear los reinicios automáticos de Windows 10 con Windows Update

Código: Seleccionar todo

from setuphelpers import *
#list de paquets à oublier tout simplement.

uninstallkey = []

#def main():
def install():
    if(windows_version() >= Version('10.0')):
        print('is windows 10')
        #reg
        registry_set('HKEY_LOCAL_MACHINE',r'SOFTWARE/Policies/Microsoft/Windows/WindowsUpdate/AU','NoAutoRebootWithLoggedOnUsers',1,type=REG_DWORD)
        # registry_set(HKEY_LOCAL_MACHINE, r'SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System','MaxGPOScriptWait',180,type=REG_DWORD)
        print('key set. reboot required to be taken in count.')
    else:
        print('not w10')

if __name__ == '__main__': #run debug
    install()

def uninstall():
    if(reg_key_exists('HKEY_LOCAL_MACHINE',r'SOFTWARE/Policies/Microsoft/Windows/WindowsUpdate/AU','NoAutoRebootWithLoggedOnUsers')):
        registry_set('HKEY_LOCAL_MACHINE',r'SOFTWARE/Policies/Microsoft/Windows/WindowsUpdate/AU','NoAutoRebootWithLoggedOnUsers',0,type=REG_DWORD)
Intenté cambiar la ruta usando barras invertidas (\\) y eliminando la 'r' del frente (lo cual, por cierto, no entiendo el propósito), pero todavía recibo este error cuando intento ejecutarlo localmente a través de Pyscripter:
*** Intérprete remoto reinicializado ***
es windows 10
Traceback (última llamada más reciente):
Archivo "C:\waptdev\ymg-WU10-autorebootblock-wapt\setup.py", línea 23, en
install()
Archivo "C:\waptdev\ymg-WU10-autorebootblock-wapt\setup.py", línea 17, en install
registry_set('HKEY_LOCAL_MACHINE',r'SOFTWARE/Policies/Microsoft/Windows/WindowsUpdate/AU','NoAutoRebootWithLoggedOnUsers',1,type=REG_DWORD)
Archivo "C:\Program Files (x86)\wapt\setuphelpers.py", línea 1654, en registry_set
con reg_openkey_noredir(root,path,sam=KEY_WRITE,create_if_missing=True) como clave:
Archivo "C:\Program Files (x86)\wapt\setuphelpers.py", línea 1431, en reg_openkey_noredir
result = _winreg.OpenKey(rootkey,subkeypath,0, sam | _winreg.KEY_WOW64_64KEY)
TypeError: El objeto no es un objeto PyHKEY


Y obtengo un error similar si intento implementarlo a través de la consola después:
es windows 10Traceback (última llamada más reciente):
Archivo "C:\Program Files (x86)\wapt\common.py", línea 3818, en install_wapt
exitstatus = setup.install()
Archivo "c:\users\rcu\appdata\local\temp\waptx2yigf\setup.py", línea 17, en install
Archivo "C:\Program Files (x86)\wapt\setuphelpers.py", línea 1654, en registry_set
con reg_openkey_noredir(root,path,sam=KEY_WRITE,create_if_missing=True) como clave:
Archivo "C:\Program Files (x86)\wapt\setuphelpers.py", línea 1431, en reg_openkey_noredir
result = _winreg.OpenKey(rootkey,subkeypath,0, sat | _winreg.KEY_WOW64_64KEY)
TypeError: El objeto no es un objeto PyHKEY
TypeError: El objeto no es un objeto PyHKEY
¿Podría ser un error de permisos?

Gracias, un cordial saludo,
Renaud.

Re: ¿Registry_set no funciona? [RESUELTO]

Publicado: 5 de junio de 2019 - 14:47
por renaud.counhaye
Pude solucionar mi problema con esta línea:
registry_set(HKEY_LOCAL_MACHINE,makepath('SOFTWARE','Policies','Microsoft','Windows','WindowsUpdate','AU'),'NoAutoRebootWithLoggedOnUsers',1,type=REG_DWORD)

Re: ¿Registry_set no funciona? [RESUELTO]

Publicado: 5 de junio de 2019 - 15:09
por Patrice_minagri
Buen día,

Yo habría escrito el registry_set de la siguiente manera:

Código: Seleccionar todo

registry_set(HEY_LOCAL_MACHINE, "Software\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU, 'NoAutorebootWithLoggedOnUsers', 1, type=REG_DWORD)
en lugar de :

Código: Seleccionar todo

registry_set('HKEY_LOCAL_MACHINE',r'SOFTWARE/Policies/Microsoft/Windows/WindowsUpdate/AU','NoAutoRebootWithLoggedOnUsers',1,type=REG_DWORD)
Aunque el valor 1 debe tomar la forma de 0x01 en la instrucción para datos de tipo REG_DWORD (no lo recuerdo ahora).

Esto funciona con \\

Atentamente.

Patrice

Re: ¿Registry_set no funciona? [RESUELTO]

Publicado: 5 de junio de 2019 - 16:36
por renaud.counhaye
Hola Patrice, :)

como te comenté antes, intenté usar la ruta con barras invertidas, pero no me funcionó. :/ ¿
Quizás fue solo suerte?

Saludos.