C#:简单的Windows服务提供安全例外

sbe*_*rli 13 c# windows-services securityexception

我正在通过以下链接进行演练:http: //msdn.microsoft.com/en-us/library/zt39148a%28VS.80%29.aspx

我一点一点地跟着它.我成功安装了该服务,但是,当我尝试运行它时,会出现以下错误消息:

"MyNewService.Exe [5292]中发生了未处理的异常("System.Security.SecurityException").

我已经看到,对很多人来说,它有效,但有些人得到了这个例外,但我找不到答案.有没有人有想法?谢谢.

Jam*_*mes 19

EventLog.SourceExists方法就是将导致此异常.最常见的原因是它尝试访问所有事件日志(包括安全日志),默认情况下,Vista中您没有权限.另一个原因可能是如果在事件日志中找不到您要查找的源(我发现它很奇怪!).

解决方法:

bool sourceFound = false;
try
{
    sourceFound = EventLog.SourceExists("MySource");
}
catch (SecurityException)
{
    sourceFound = false;
}
Run Code Online (Sandbox Code Playgroud)

另一个选择是简单地提升您的权限,但是,当您按照教程逐步执行时,您的服务将在LocalService帐户下运行(这也不具有此特定方法的权限).因此,您将在MSDN文档中找到解决方案,以检查ServiceInstaller中是否存在事件源,如果不存在,则在安装程序中创建源.