Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用具有管理员权限的C#应用程序创建没有管理员权限的Outlook应用程序/邮件项目_C#_Exception_Outlook_Administrator - Fatal编程技术网

使用具有管理员权限的C#应用程序创建没有管理员权限的Outlook应用程序/邮件项目

使用具有管理员权限的C#应用程序创建没有管理员权限的Outlook应用程序/邮件项目,c#,exception,outlook,administrator,C#,Exception,Outlook,Administrator,我已经写了一个C代码,需要有管理员权限。使用此应用程序,我试图创建Outlook应用程序/邮件项目,以便打开Outlook撰写窗口。但是,Outlook 2013已在没有管理员权限的情况下运行。我正在使用以下代码,但由于创建的应用程序/邮件项目和已运行的outlook实例具有不同的权限,因此会引发异常 Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Applicatio

我已经写了一个C代码,需要有管理员权限。使用此应用程序,我试图创建Outlook应用程序/邮件项目,以便打开Outlook撰写窗口。但是,Outlook 2013已在没有管理员权限的情况下运行。我正在使用以下代码,但由于创建的应用程序/邮件项目和已运行的outlook实例具有不同的权限,因此会引发异常

Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.MailItem mailItem = app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
是否仍然可以以当前用户而不是管理员的身份创建应用程序/邮件项目(类似于通过提供当前用户的用户名和密码以当前用户的身份运行流程)?

Outlook需要在没有管理员权限的情况下运行才能提供功能性索引服务

以下是例外情况的详细信息:

System.Runtime.InteropServices.COMException was unhandled
HResult=-2146959355
Message=Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
Source=mscorlib
ErrorCode=-2146959355

不,如果安全上下文不同,COM封送将显式拒绝工作。这是一种安全功能,旨在避免在未经明确用户同意的情况下提升安全权限

如果需要从应用程序访问正在运行的实例,则需要以管理员权限运行Outlook。安全上下文应该与您的应用程序相对应


无论如何,您可以考虑使用Exchange Web服务。有关更多信息,请参阅。此外,您可以考虑使用.NET BCL来创建和发送电子邮件。

< P>一个解决方案是通过提供当前用户的用户名和密码来执行次级C应用程序作为当前用户。然后,此应用程序负责创建Outlook邮件/应用程序项并打开撰写邮件。这样,已经运行的Outlook和创建的邮件/应用程序项都没有管理员权限

我进一步简化了这一点,甚至避免使用任何辅助C#应用程序,只需重新执行我原来的C#应用程序,但没有管理员权限,并将输入参数传递给它以创建Outlook邮件/应用程序项


这似乎工作得很好。

是的。它甚至不能与模拟(LogonUser+Impersonate)一起工作,正如我在问题中提到的,Outlooks需要在没有管理员权限的情况下运行,以使其索引服务正常工作。不过,了解一种解决这一问题的方法将非常有趣!