我做了演练在下面的链接: http://msdn.microsoft.com/en-us/library/zt39148a%28VS.80%29.aspx
我已经完全遵循它,一行行。 我成功地安装了服务,但是,当我尝试运行它,将出现以下错误信息:
“未处理的异常(” System.Security.SecurityException')发生在MyNewService.Exe [5292]。
我已经看到,对于很多人来说它的工作原理,但有些人得到这个例外,虽然我无法找到答案。 有没有人有一个想法? 谢谢。
该EventLog.SourceExists方法就是将导致此异常。 最常见的原因是它尝试访问所有在Vista默认你没有权限对事件日志(包括安全日志)。 另一个原因可能是,如果你正在寻找的源未在事件日志中发现的(我觉得相当奇怪!)。
一个变通办法:
bool sourceFound = false;
try
{
sourceFound = EventLog.SourceExists("MySource");
}
catch (SecurityException)
{
sourceFound = false;
}
另一种选择是简单地提升权限,但是,如你在哪里以下教程一步一步的服务将LocalService帐户下运行(这再次将没有权限为这个特定的方法)。 因此,你会发现MSDN文档的解决方案是检查在的ServiceInstaller是否存在事件源,如果没有,请在安装程序的源。
你是你的机器上的本地管理员? 如果是这样,把下面的代码行,在你的Windows服务的构造函数的顶部:
System.Diagnostics.Debugger.Break();
当服务开始运行,它会打这个断点,让你跳到Visual Studio。 然后,您可以从那里调试,直到你发现在异常发生。
去拿的副本进程监视器 ,看会发生什么-你应该显示为一个失败的结果的问题,你可以从那里调查...
编辑:为了澄清,其从微软(Sysinternals的)一个免费的工具,它做什么它在锡说:)
只是一个猜测:是您的.exe文件躺在一个网络文件夹? 或者是被标记为“从Internet下载”? 因为在这种情况下,.NET框架将分配给它的权限较少时相比,它是直接在本地驱动器上,并从互联网上下载不显着。