[GELÖST] Paket zur Deaktivierung der Migration zum neuen Outlook

Fragen zu WAPT-Paketen / Anfragen und Hilfe bezüglich WAPT-Paketen.
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
Antwort
bastien30
Nachrichten: 38
Anmeldung: 8. März 2024 – 15:21 Uhr

26. Dezember 2024 – 17:16 Uhr

Guten Morgen,

EDIT 1: Korrektur des Wertes des Schlüssels HideNewOutlookToggle (1 und nicht 0), mein Fehler.
EDIT 2: Die Registrierungsschlüssel werden für alle Benutzer in der install()-Funktion und nicht während session_setup() konfiguriert, da Benutzer ohne Administratorrechte nicht das Recht haben, in HKEY_CURRENT_USER\Software\Policies\ zu schreiben.
EDIT 3: Erneute Anwendung der Registry-Schlüsselkonfiguration aus dem Audit, falls Schlüssel für einen Benutzer fehlerhaft oder nicht vorhanden sind (Fall von Benutzern, die nach der Paketinstallation erstellt wurden).

Hier ist ein Paket, mit dem Sie die Migration zum neuen Outlook deaktivieren können (siehe https://www.it-connect.fr/gpo-bloquer-m ... l-outlook/).
Außerdem wird die Anwendung deinstalliert, falls sie installiert ist.

Bitte lassen Sie mich wissen, ob es für Sie gut funktioniert :D

Code: Alle auswählen

# -*- coding: utf-8 -*-
from setuphelpers import *

# https://learn.microsoft.com/en-us/microsoft-365-apps/outlook/get-started/control-install

# Disable new outlook migration
new_outlook_migration = { "path" : r'Software\Policies\Microsoft\office\16.0\outlook\preferences', "name" : "NewOutlookMigrationUserSetting", "value" : 0 }

# Hide "Try new Outlook" button
new_outlook_button = { "path" : r'Software\Microsoft\Office\16.0\Outlook\Options\General', "name" : "HideNewOutlookToggle", "value" : 1 }

def install():
    # Remove new Outlook Appx if installed (computer environment)
    remove_appx(r'Microsoft.OutlookForWindows')

    # Set registry values for all users
    set_registry_all_users()

def session_setup():
    # Remove new Outlook Appx if installed (user environment)
    remove_user_appx(r'Microsoft.OutlookForWindows')
        
def audit():
    audit_result = "OK"
    need_reapply = False
    # Check registry values for all users if exists
    for i in [new_outlook_migration, new_outlook_button]:
        for user_sid in get_all_users_sids():
            if reg_key_exists(HKEY_USERS, user_sid):
                if reg_value_exists(HKEY_USERS, r'%s\%s' % (user_sid, i["path"]), i["name"]):
                    if registry_readstring(HKEY_USERS, r'%s\%s' % (user_sid, i["path"]), i["name"]) != str(i["value"]):
                        print(r'Registry value "%s" is wrong for user "%s", reapplying...' % (i["name"], get_user_from_sid(user_sid)))
                        need_reapply = True
                else:
                    print(r'Registry value "%s" is missing for user "%s", reapplying...' % (i["name"], get_user_from_sid(user_sid)))
                    need_reapply = True

    if need_reapply:
        set_registry_all_users()
        audit_result = "WARNING"

    return audit_result
    
def uninstall():
    # Remove registry values for all users if exists
    for i in [new_outlook_migration, new_outlook_button]:
        for user_sid in get_all_users_sids():
            if reg_value_exists(HKEY_USERS, r'%s\%s' % (user_sid, i["path"]), i["name"]):
                registry_delete(HKEY_USERS, r'%s\%s' % (user_sid, i["path"]), i["name"])

def set_registry_all_users():
    for i in [new_outlook_migration, new_outlook_button]:
        for user_sid in get_all_users_sids():
            if reg_key_exists(HKEY_USERS, user_sid):
                registry_set(HKEY_USERS, r'%s\%s' % (user_sid, i["path"]), i["name"], i["value"], REG_DWORD)

def get_all_users_sids():
    user_sids = []
    with reg_openkey_noredir(HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList') as sids:
        for sid in reg_enum_subkeys(sids):
            # Exclude system users SIDs
            if sid.startswith("S-1-5-21-"):
                user_sids.append(sid)
    # Return all users SIDs as list
    return ensure_list(user_sids)
fdu
Nachrichten: 1
Anmeldung: 3. Januar 2025 – 16:11 Uhr

3. Januar 2025 – 16:55 Uhr

Hallo,
Hier sind einige kleine Änderungen, die für unseren speziellen Fall mit Unterstützung von Bastien vorgenommen wurden.
Und viel Glück am Montag! :D

---

Erläuterung zu den durchgeführten Tests (Paketname in unserem System: disable-newoutlook).
Getestet unter Windows Pro 10 22H2 und Windows Pro 11 23H2
Funktioniert auf Rechnern mit mehreren Benutzersitzungen
Und führen Sie kein Rollback bei Benutzern durch, die bereits auf das neue Outlook migriert wurden

Die Computer müssen nicht neu gestartet werden, damit die Änderung wirksam wird. Schließen Sie einfach Outlook und öffnen Sie es erneut.

Code: Alle auswählen

# -*- coding: utf-8 -*-
from setuphelpers import *

#source: https://learn.microsoft.com/en-us/microsoft-365-apps/outlook/get-started/control-install

# Disable new outlook migration
int_newoutlook_migration = 0
# Hide "Try new Outlook" button
int_newoutlook_button = 1

#Migration to New Outlook (default is disabled)
reg_newoutlook_migration = { "path" : r'Software\Policies\Microsoft\office\16.0\outlook\preferences', "name" : "NewOutlookMigrationUserSetting", "value" : int_newoutlook_migration, "type" : REG_DWORD }
# "Try new Outlook" button (default is hidden)
reg_newoutlook_button = { "path" : r'Software\Microsoft\Office\16.0\Outlook\Options\General', "name" : "HideNewOutlookToggle", "value" : int_newoutlook_button, "type" : REG_DWORD }


def install():
    # Remove new Outlook Appx if installed (computer environment)
    #remove_appx(r'Microsoft.OutlookForWindows')

    # Set registry values for all users
    for registry in [reg_newoutlook_migration, reg_newoutlook_button]:
        for user_sid in get_all_users_sids():
            if reg_key_exists(HKEY_USERS, user_sid):
                registry_set(HKEY_USERS, r'%s\%s' % (user_sid, registry["path"]), registry["name"], registry["value"], registry["type"])

def session_setup():
    pass
    # Remove new Outlook Appx if installed (user environment)
    #remove_user_appx(r'Microsoft.OutlookForWindows')

def audit():
    audit_result = "OK"
    # Check registry values for all users if exists
    for registry in [reg_newoutlook_migration, reg_newoutlook_button]:
        for user_sid in get_all_users_sids():
            if reg_value_exists(HKEY_USERS, r'%s\%s' % (user_sid, registry["path"]), registry["name"]):
                if registry_readstring(HKEY_USERS, r'%s\%s' % (user_sid, registry["path"]), registry["name"]) != str(registry["value"]):
                    print(r'Registry value "%s" is wrong for user "%s"' % (registry["name"], get_user_from_sid(user_sid)))
                    audit_result = "ERROR"
    return audit_result

def uninstall():
    #Enable
    # Force new outlook migration
    #int_newoutlook_migration = 1
    # Show "Try new Outlook" button
    int_newoutlook_button = 0

    #Force to New Outlook
    #reg_newoutlook_migration = { "path" : r'Software\Policies\Microsoft\office\16.0\outlook\preferences', "name" : "NewOutlookMigrationUserSetting", "value" : int_newoutlook_migration, "type" : REG_DWORD }
    # "Try new Outlook" button
    reg_newoutlook_button = { "path" : r'Software\Microsoft\Office\16.0\Outlook\Options\General', "name" : "HideNewOutlookToggle", "value" : int_newoutlook_button, "type" : REG_DWORD }

    # Set registry values for all users
    for registry in [reg_newoutlook_button]:
        for user_sid in get_all_users_sids():
            if reg_key_exists(HKEY_USERS, user_sid):
                registry_set(HKEY_USERS, r'%s\%s' % (user_sid, registry["path"]), registry["name"], registry["value"], registry["type"])

def get_all_users_sids():
    user_sids = []
    with reg_openkey_noredir(HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList') as sids:
        for sid in reg_enum_subkeys(sids):
            # Exclude system users SIDs
            if sid.startswith("S-1-5-21-"):
                user_sids.append(sid)
    # Return all users SIDs as list
    return ensure_list(user_sids)
Antwort