diff --git a/src/StarfaceOutlookSync/Models/UserSettings.cs b/src/StarfaceOutlookSync/Models/UserSettings.cs index 125f9723..b3f85ea6 100644 --- a/src/StarfaceOutlookSync/Models/UserSettings.cs +++ b/src/StarfaceOutlookSync/Models/UserSettings.cs @@ -42,40 +42,54 @@ namespace StarfaceOutlookSync.Models public void ApplyOutlookSecuritySetting() { // Alle Office-Versionen abdecken (16.0 = 2016/2019/2021/2024/365, 15.0 = 2013) + // Beide Pfade versuchen: Policies (GPO-Pfad) und direkt (normaler User-Pfad) var versions = new[] { "16.0", "15.0" }; + var prefixes = new[] + { + @"Software\Policies\Microsoft\Office", // GPO-Pfad (braucht ggf. Rechte) + @"Software\Microsoft\Office" // Normaler User-Pfad (immer schreibbar) + }; + + var securityValues = new (string name, int value)[] + { + ("ObjectModelGuard", 2), + ("PromptOOMAddressBookAccess", 2), + ("PromptOOMAddressInformationAccess", 2), + ("PromptOOMSend", 2), + ("PromptOOMSaveAs", 2), + ("PromptOOMFormulaAccess", 2), + ("PromptOOMCustomAction", 2), + ("PromptSimpleMAPISend", 2), + ("PromptSimpleMAPINameResolve", 2), + ("PromptSimpleMAPIOpenMessage", 2), + ("AdminSecurityMode", 3), + }; foreach (var ver in versions) { - try + foreach (var prefix in prefixes) { - var regPath = $@"Software\Policies\Microsoft\Office\{ver}\Outlook\Security"; + var regPath = $@"{prefix}\{ver}\Outlook\Security"; - if (AutoAcceptOutlookPrompt) + try { - var key = Registry.CurrentUser.CreateSubKey(regPath); - key.SetValue("ObjectModelGuard", 2, RegistryValueKind.DWord); - key.SetValue("PromptOOMAddressBookAccess", 2, RegistryValueKind.DWord); - key.SetValue("PromptOOMAddressInformationAccess", 2, RegistryValueKind.DWord); - key.SetValue("PromptOOMSend", 2, RegistryValueKind.DWord); - key.SetValue("PromptOOMSaveAs", 2, RegistryValueKind.DWord); - key.SetValue("PromptOOMFormulaAccess", 2, RegistryValueKind.DWord); - key.SetValue("PromptOOMCustomAction", 2, RegistryValueKind.DWord); - key.SetValue("PromptSimpleMAPISend", 2, RegistryValueKind.DWord); - key.SetValue("PromptSimpleMAPINameResolve", 2, RegistryValueKind.DWord); - key.SetValue("PromptSimpleMAPIOpenMessage", 2, RegistryValueKind.DWord); - key.SetValue("AdminSecurityMode", 3, RegistryValueKind.DWord); - key.Close(); - } - else - { - try + if (AutoAcceptOutlookPrompt) { - Registry.CurrentUser.DeleteSubKey(regPath, false); + var key = Registry.CurrentUser.CreateSubKey(regPath); + if (key != null) + { + foreach (var (name, value) in securityValues) + key.SetValue(name, value, RegistryValueKind.DWord); + key.Close(); + } + } + else + { + try { Registry.CurrentUser.DeleteSubKey(regPath, false); } catch { } } - catch { } } + catch { } } - catch { } } } }