我有一个.NET Windows窗体应用程序,用户以admin的身份运行,因为它需要对文件的特定访问。
这个应用程序多年来一直运行良好,但我们需要添加一个功能,用户可以使用Microsoft.Office.Interop.Outlook从应用程序内部生成电子邮件。
一旦我们在Outlook对象上调用"new“,它就会出现以下错误:
System.Runtime.InteropServices.COMException ( 0x80080005 ):使用CLSID {0006F03A-0000-C000-000000000046}检索组件的COM类工厂,由于以下错误而失败: 80080005服务器执行失败(HRESULT异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE))。
这是因为默认情况下,MS运行时没有提升的权限,而Windows应用程序是以提升的权限运行的,但是COM+无法处理此设置。
因此,我需要一种方法来将.NET Outlook代码作为当前用户调用,但使用的权限较低。
我看过WindowsIdentity类,但它似乎不起作用。我需要某种方式以当前用户的身份运行一个方法或代码块,但使用的权限较低。
发布于 2021-10-13 14:56:28
这个应用程序多年来一直运行良好,但我们需要添加一个功能,用户可以使用Microsoft.Office.Interop.Outlook从应用程序内部生成电子邮件。
如果您想在这种情况下自动化Outlook,您需要运行您的WinForms应用程序,而不需要管理员权限。或者只需在与应用程序相同的安全上下文下运行Outlook。否则,您可能会考虑其他发送电子邮件的技术- EWS、图API、使用来自.net BCL的MailMessage类等等。
https://stackoverflow.com/questions/69531200
复制相似问题