Página 1 de 1

Usando la clase WaptWUA en un script

Publicado: 3 de julio de 2026 - 11:26 a. m.
por tux
Buen día,

Tengo un script de auditoría que realiza una serie de operaciones durante un intervalo de tiempo, por la noche.
Parte de este script gestiona las actualizaciones de Windows.

Acabamos de realizar la actualización (versión 2.6.1.17384) y mi script ya no funciona.
El objetivo es hacer lo mismo que un "wapt-get waptwua-install" sin una tarea programada.

Esta es la sección de código que me está causando problemas:

Código: Seleccionar todo

# -*- coding: utf-8 -*-
from setuphelpers import *
from waptwua.client import WaptWUA

def audit():
	with EnsureWUAUServRunning():
            wua_client = WaptWUA(WAPT)
            wua_client.install_updates()
Este es el error que me aparece:

Código: Seleccionar todo

2026-07-03 10:53:13,522 ERROR ERROR installing update: 0x800401f0 : CoInitialize n’a pas été appelé.
2026-07-03 10:53:13,768 CRITICAL Unable to build status data for key host_networking: x_wmi_uninitialised_thread("WMI returned a syntax error: you're probably running inside a thread without first calling pythoncom.CoInitialize[Ex]")
2026-07-03 10:53:13,773 CRITICAL WMI is broken on this computer. See https://techcommunity.microsoft.com/t5/ask-the-performance-team/wmi-rebuilding-the-wmi-repository/ba-p/373846 : x_wmi_uninitialised_thread: <x_wmi: WMI returned a syntax error: you're probably running inside a thread without first calling pythoncom.CoInitialize[Ex] (no underlying exception)>
[]
re-enabling wuauserv previous state: 0
2026-07-03 10:53:14,246 CRITICAL Fatal error in audit function: x_wmi_uninitialised_thread: <x_wmi: WMI returned a syntax error: you're probably running inside a thread without first calling pythoncom.CoInitialize[Ex] (no underlying exception)>:
¿Puedes ayudarme a adaptar este guion?

Re: Uso de la clase WaptWUA en un script

Publicado: 3 de julio de 2026 - 16:35
por htouvet
Ah... tal vez una regresión

¿Puedes probar el script añadiendo pythoncom.CoInitialize()?

Código: Seleccionar todo

# -*- coding: utf-8 -*-
from setuphelpers import *
from waptwua.client import WaptWUA
import pythoncom

def audit():
    try:
        pythoncom.CoInitialize()
    	with EnsureWUAUServRunning():
                wua_client = WaptWUA(WAPT)
                wua_client.install_updates()
    finally:
        pythoncom.CoUninitialize()

Re: Uso de la clase WaptWUA en un script

Publicado: 3 de julio de 2026 - 17:03
por tux
Tengo un error diferente:

Código: Seleccionar todo

Exception at 7343A590: EAccessViolation:
Access violation.

Re: Uso de la clase WaptWUA en un script

Publicado: 3 de julio de 2026 - 18:59
por htouvet
¿Estás seguro de que tienes la última versión, la 2.6.1.17834?
Hice una prueba, pero no pude reproducir el error de acceso.
Sin embargo, estos errores de "acceso no autorizado" suelen depender del estado anterior de la memoria.

Re: Uso de la clase WaptWUA en un script

Publicado: 6 de julio de 2026 - 9:08 a. m.
por tux
Buen día,

Sí, efectivamente estoy en la versión 2.6.1.17834, aún no he actualizado mi firma.
Lo probé esta mañana en mi ordenador recién encendido y tengo el mismo problema.

¿Puede la llamada a la función pythoncom.CoUninitialize() tener algún impacto en PyScripter?

Código: Seleccionar todo

Scanning with windows updates rules:
{
 "direct_download":false,
 "default_allow":false,
 "include_potentially_superseded_updates":false,
 "filter":"Type='Software' or Type='Driver'",
 "download_scheduling":"12h",
 "install_scheduling":"6h",
 "install_delay":null,
 "postboot_delay":"10m",
 "user_locale":1033
}
Bypassing scan, no change since last successful scan
Exception at 728BA590: EAccessViolation:
Access violation.
>>> 
*** Remote Interpreter Reinitialized ***
>>>