Página 1 de 1

[RESUELTO] Agregar usuario al grupo local

Publicado: 9 de noviembre de 2022 - 12:13 p. m.
por Mathieu
Buen día,
Tengo problemas con un comando para agregar el usuario a un grupo local en auditoría.

Código: Seleccionar todo

2022-11-08 09:44:33,484 CRITICAL Fatal error in audit function: TypeError: 'error' object is not subscriptable:
Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\setuphelpers_windows.py", line 2264, in add_user_to_group
    win32net.NetLocalGroupAddMembers(None, group, 3, [user_group_info])
pywintypes.error: (1378, 'NetLocalGroupAddMembers', 'Le nom de compte spécifié est déjà membre du groupe.')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\waptpackage.py", line 2978, in call_setup_hook
    hookdata = hook_func()
  File "C:\waptdev\futur-Creation_Profil_2.0-60_windows_PREPROD-wapt\setup.py", line 79, in audit
    add_user_to_group(user, "Utilisateurs avec pouvoir")
  File "C:\Program Files (x86)\wapt\setuphelpers_windows.py", line 2267, in add_user_to_group
    if e[0] != 1378:
TypeError: 'error' object is not subscriptable

Audit aborted due to exception: 'error' object is not subscriptable
Me aparece un error cuando el usuario ya está en el grupo; no cumple la primera condición y se intenta agregarlo. De ahí el error

Aquí está el fragmento relevante del script:

Código: Seleccionar todo

user = registry_readstring(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI", "LastLoggedOnUser")

if user in local_group_members("Utilisateurs avec pouvoir"):
        print("Utilisateur déjà dans le groupe Utilisateurs avec pouvoir")
elif user not in local_group_members("Utilisateurs avec pouvoir"):
        print("Utilisateurs pas de le groupe Power Users")
        add_user_to_group(user, "Utilisateurs avec pouvoir")
Gracias

Re: Agregar un usuario a un grupo local

Publicado: 9 de noviembre de 2022 - 17:46
por dcardon
Hola Mathieu,

Ah, sí, es un error que pasamos por alto en la transición de Python 2 a Python 3... Puedes añadir la siguiente función a tu paquete para sobrescribir tu archivo setup.py con la definición de función que aparece a continuación. Se solucionará en la próxima versión.

Atentamente,

Denis

Código: Seleccionar todo

def add_user_to_group(user, group):
    """Add membership to a local group for a user

    """
    user_group_info = dict(
        domainandname=user
    )
    try:
        win32net.NetLocalGroupAddMembers(None, group, 3, [user_group_info])
    except win32net.error as e:
        # pass if already member of the group
        if e.winerror != 1378:
            raise
        else:
            logger.debug('add_user_to_group %s %s : %s' % (user, group, ensure_unicode(e)))

Re: Agregar un usuario a un grupo local

Publicado: 16 de noviembre de 2022 - 10:44 a. m.
por dcardon
Marco este problema como resuelto.
Denis