Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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#_Security_Outlook_Vsto_Event Log - Fatal编程技术网

C# Outlook加载项是否可以写入系统事件日志?

C# Outlook加载项是否可以写入系统事件日志?,c#,security,outlook,vsto,event-log,C#,Security,Outlook,Vsto,Event Log,我有一个用VSTO 2010开发的outlook插件,我想写一些事件日志。在调试过程中,我可以通过简单地执行以下操作来实现这一点: if (!EventLog.SourceExists(ADDIN_FRIENDLY_NAME)) { EventLog.CreateEventSource(ADDIN_FRIENDLY_NAME, null); } EventLog.WriteEntry(ADDIN_FRIENDLY_NAME, message, EventLogEntryType.Warn

我有一个用VSTO 2010开发的outlook插件,我想写一些事件日志。在调试过程中,我可以通过简单地执行以下操作来实现这一点:

if (!EventLog.SourceExists(ADDIN_FRIENDLY_NAME))
{
    EventLog.CreateEventSource(ADDIN_FRIENDLY_NAME, null);
}
EventLog.WriteEntry(ADDIN_FRIENDLY_NAME, message, EventLogEntryType.Warning);
问题是外接程序的发布版本没有读取日志的管理员权限。我找到了一些关于在安装过程中创建事件日志源的文章,但我使用的是ClickOnce,似乎没有办法做到这一点。另外,有人谈到要创建一个单独的DLL,然后在该DLL上调用
InstallUtil
来创建源代码。这对我也不起作用,因为这仍然需要管理员权限


是否可以使用Outlook的安全级别运行外接程序?我在事件日志中看到Outlook的消息,因此它必须具有足够的权限才能执行此操作。

您可以尝试使用中建议的解决方案以管理员身份运行click once,但我认为这不是一个好的解决方案

也许更好的解决方案是在click once软件包中包含一个标准的.msi安装程序,您可以在第一次安装加载项时执行该程序。此msi仅创建事件源

关于你的问题:

是否可以使用Outlook的安全级别运行外接程序


我不认为您的外接程序使用不同的安全级别运行,但您可能启用了UAC,因此如果您是管理员,您也无法执行管理操作。

如果没有管理员权限,您无法创建事件源。因此,您需要更改策略并写入其他内容。谢谢John,我确实认为这是一个选项,但希望检查是否可以在与Outlook相同的安全级别上运行加载项。我总是可以求助于普通的文件日志记录。你总是可以尝试登录到远程数据库-这使得聚合报告更简单。标记为答案,因为它确实为我的问题这样做了。至于我最后所做的解决方案,为了简单起见,我编写了单独的代码来写入当前用户的documents文件夹下的文本日志文件。