如何信任访问 Outlook 对象模型的外部应用程序(启用所有安全选项)

How give trust to an external application accessing the Outlook Object Model (with all security options on)

我有一个与 Outlook 交互的 .NET 应用程序,如下所示:

                Microsoft.Office.Interop.Outlook.Application app = new
              Microsoft.Office.Interop.Outlook.Application();
                Microsoft.Office.Interop.Outlook.MailItem item = app.CreateItem((Microsoft.Office.Interop.Outlook.OlItemType.olMailItem));
                item.PropertyAccessor.SetProperty(PsInternetHeaders + Foobar, 1031);
                item.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
                item.To = "a@test.com;b@test.com;c@test.com";
                item.BCC = "cc@test.com";
                item.Body = "Hello There!";
                item.Display();

请注意,我需要访问“PropertyAccessor”属性。

在正常环境中,它运行良好,但在具有此注册表项的“安全”环境中,它只是失败并显示 Operation aborted (Exception from HRESULT: 0x80004004 (E_ABORT)):

[HKEY_CURRENT_USER\Software\Policies\Microsoft\office.0\outlook\security]
"PromptOOMAddressBookAccess"=dword:00000000
"AdminSecurityMode"=dword:00000003
"PromptOOMAddressInformationAccess"=dword:00000000

Outlook 安全模型似乎有一个“trustedaddins”列表,但我不确定这是否也适用于“外部应用程序”以及我是否需要在 TrustedAddins 下注册(参见 here). 我的主要问题是:我可以只注册并在 trustedaddins 下 foobar.exe 还是这根本不可能? 我知道我可以降低或禁用安全性,但这不是我的选择 ;)

您唯一的选择列在 How to avoid Outlook Security Alert when sending Outlook message from VBScript?

您可能还想将 PsInternetHeaders 属性仅设置为字符串,而不是整数。