2012-11-17 29 views
7

我有一个用VSTO 2010开发的outlook插件,我想写一些事件日志。在调试时我能得到这个通过简单地做以下工作: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的消息,因此它必须有足够的权利来执行此操作。

+2

如果没有管理员权限,则无法创建事件源。所以,你需要改变你的策略并写信给其他人。 –

+0

感谢John,我确实认为这是一个选项,但想检查是否可以在与Outlook相同的安全级别上运行加载项。我总是可以使用正常的文件记录。 – user1715925

+0

您可以随时尝试登录到远程数据库 - 这使得汇总报告更加简单。 – SliverNinja

回答

1

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

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

关于你的问题:

是否有可能在使用Outlook的安全级别加载运行?

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

+0

标记为答案,因为它对我的问题确实如此。至于我最终做的解决方案,为了简单起见,我写了单独的代码写入当前用户的文档文件夹下的文本日志文件。 – user1715925