EDIT 1 : correction de la valeur de la clé HideNewOutlookToggle (1 et pas 0), erreur de ma part.
EDIT 2 : configuration des clés de registre pour tous les utilisateurs dans la fonction install() plutôt que pendant le session_setup() car les utilisateurs non admin n'ont pas le droit d'écrire dans HKEY_CURRENT_USER\Software\Policies\.
EDIT 3 : ré-application de la configuration des clés de registre depuis l'audit si les clés sont mauvaises ou manquantes pour un utilisateurs (cas des utilisateurs créés après l'installation du paquet).
Voici un paquet qui permet de désactiver la migration vers le nouveau Outlook (voir https://www.it-connect.fr/gpo-bloquer-m ... l-outlook/).
Il désinstalle également l'application si elle est installée.
N'hésitez pas à me confirmer s'il fonctionne bien chez vous

Code : Tout sélectionner
# -*- 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)