首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >.NET在执行需要较低权限的特定代码块调用COM+时,降低管理提升级别或冒充当前用户。

.NET在执行需要较低权限的特定代码块调用COM+时,降低管理提升级别或冒充当前用户。
EN

Stack Overflow用户
提问于 2021-10-11 18:54:57
回答 1查看 97关注 0票数 2

我有一个.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类,但它似乎不起作用。我需要某种方式以当前用户的身份运行一个方法或代码块,但使用的权限较低。

EN

回答 1

Stack Overflow用户

发布于 2021-10-13 22:56:28

这个应用程序多年来一直运行良好,但我们需要添加一个功能,用户可以使用Microsoft.Office.Interop.Outlook从应用程序内部生成电子邮件。

如果您想在这种情况下自动化Outlook,您需要运行您的WinForms应用程序,而不需要管理员权限。或者只需在与应用程序相同的安全上下文下运行Outlook。否则,您可能会考虑其他发送电子邮件的技术- EWS、图API、使用来自.net BCL的MailMessage类等等。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69531200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档