安装一个自开发的 Windows 服务
安装一个自开发的 Windows 服务
我正在尝试部署我写的一个服务。这是InstallLog文件:
正在安装程序集 'c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe'。 受影响的参数是: logtoconsole = assemblypath = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe logfile = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.InstallLog 正在安装服务TweetLinkService... 在应用程序日志中创建EventLog源TweetLinkService... 正在回滚程序集 'c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe'。 受影响的参数是: logtoconsole = assemblypath = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe logfile = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.InstallLog 为源TweetLinkService恢复事件日志到先前状态。 在System.Diagnostics.EventLogInstaller安装程序的回滚阶段发生了异常。 System.Security.SecurityException:找不到源,但无法搜索部分或所有事件日志。无法访问的日志:Security。 在安装的回滚阶段发生了异常。此异常将被忽略,回滚将继续进行。但是,回滚完成后,机器可能无法完全恢复到初始状态。
如您所见,它不起作用。我不确定该如何继续,Bing和Google也无法解决。我已将serviceProcessInstaller1的帐户设置为LocalSystem。代码编译没有问题,但现在我想运行它...有什么想法吗?我是我的电脑上的管理员,并且在VS2008管理控制台中运行以下命令:
InstallUtil TweetLinkQueue.exe
更新后添加/ShowCallStack选项
调用堆栈
在安装阶段发生异常。 System.Security.SecurityException:找不到源,但无法搜索部分或所有事件日志。无法访问的日志:Security。 在System.Diagnostics.EventLog.FindSourceRegistration(String source, String m achineName, Boolean readOnly) 在System.Diagnostics.EventLog.SourceExists(String source, String machineName ) 在System.Diagnostics.EventLogInstaller.Install(IDictionary stateSaver) 在System.Configuration.Install.Installer.Install(IDictionary stateSaver) 在System.ServiceProcess.ServiceInstaller.Install(IDictionary stateSaver) 在System.Configuration.Install.Installer.Install(IDictionary stateSaver) 在System.Configuration.Install.Installer.Install(IDictionary stateSaver) 在System.Configuration.Install.AssemblyInstaller.Install(IDictionary savedSt ate) 在System.Configuration.Install.Installer.Install(IDictionary stateSaver) 在System.Configuration.Install.TransactedInstaller.Install(IDictionary saved State)
这是构造函数:
public TweetLinkService() { InitializeComponent(); if (!EventLog.SourceExists("TweetLinkQueue")) { EventLog.CreateEventSource("TweetLinkQueue", "Log"); TweetLinksLog.Source = "TweetLinkQueue"; TweetLinksLog.Log = "Log"; TweetLinksLog.WriteEntry("Log Created!"); } }
更新后添加入口点:
namespace TweetLinkQueue { static class Program { ////// 程序的主入口点。 /// static void Main() { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new TweetLinkService() }; ServiceBase.Run(ServicesToRun); } } }