Page 1 of 1

[SOLVED] Adding user to local group

Published: November 9, 2022 - 12:13 PM
by Mathieu
Good morning,
I am having trouble with a command to add the user to a Local group in auditing.

Code: Select all

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
I'm encountering an error when the user is already in the group; they don't meet the first condition, and it's trying to add them. Hence the error

Here is the relevant snippet of script:

Code: Select all

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")
Thank you

Re: Adding a user to a local group

Published: November 9, 2022 - 5:46 PM
by dcardon
Hello Mathieu,

Ah yes, that's a bug we missed in the Python 2 to Python 3 transition... You can add the following function to your package to override your setup.py with the function definition below. It will be fixed in the next version.

Sincerely,

Denis

Code: Select all

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: Adding a user to a local group

Published: November 16, 2022 - 10:44 AM
by dcardon
I'm marking this issue as resolved.
Denis