【问题标题】:Can an Outlook addin write to the system event log?Outlook 插件可以写入系统事件日志吗?
【发布时间】:2012-11-05 18:01:22
【问题描述】:

我有一个使用 VSTO 2010 开发的 Outlook 插件,我想编写一些事件日志记录。在调试时,我只需执行以下操作即可使其工作:

if (!EventLog.SourceExists(ADDIN_FRIENDLY_NAME))
{
    EventLog.CreateEventSource(ADDIN_FRIENDLY_NAME, null);
}
EventLog.WriteEntry(ADDIN_FRIENDLY_NAME, message, EventLogEntryType.Warning);

问题是加载项的发布版本没有读取日志的管理员权限。我发现一些关于在安装过程中创建 EventLog 源的文章,但我使用的是 ClickOnce,但似乎没有办法做到这一点。此外,有人谈到创建一个单独的 DLL,然后在该 DLL 上调用 InstallUtil 来创建源代码。这对我也不起作用,因为这仍然需要管理员权限。

是否可以使用 Outlook 的安全级别运行加载项?我在事件日志中看到 Outlook 的消息,因此它必须有足够的权限才能这样做。

【问题讨论】:

  • 您无法在没有管理员权限的情况下创建事件源。所以,你需要改变你的策略并写一些别的东西。
  • 谢谢约翰,我确实认为这是一个选项,但想检查是否可以在与 Outlook 相同的安全级别运行加载项。我总是可以诉诸正常的文件记录。
  • 您可以随时尝试登录到远程数据库 - 这使得汇总报告更加简单。

标签: c# security outlook vsto event-log


【解决方案1】:

您可以尝试使用this article 中提出的解决方案以管理员身份运行一次click,但我认为这不是一个好的解决方案。

也许更好的解决方案是在您的点击中包含一个标准的 .msi 设置,您可以在第一次安装插件时执行该设置。这个 msi 只是创建事件源。

关于您的问题:

是否可以使用 Outlook 的安全级别运行加载项?

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

【讨论】:

  • 标记为答案,因为它确实为我的问题这样做了。至于我最终做的解决方案,为了简单起见,我编写了单独的代码来写入当前用户的文档文件夹下的文本日志文件。
猜你喜欢
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多