2013-05-09 179 views
1

我创建了一个Windows Service application using c#。我遵循了this msdn文档中的步骤,但该服务未在Computer -> Manage -> Service pane的服务部分中列出。c中的Windows服务应用程序#

我错过了什么吗?它的Windows 7

想运行我的服务来检查功能。

谢谢

回答

1

您需要为Windows服务控制管理器(SCM)安装服务以了解它(凭借生成的注册表项)。

你(至少)两个选项来做到这一点:

sc create "SERVICENAME" binpath = "C:\whatever\Service.exe" 

installutil "C:\whatever\Service.exe" 

对于sc create,任何命令提示符应该做的。对于installutil,Visual Studio命令提示符是运行它的最简单方式 - 因为VS命令提示符的环境变量使得使用.NET命令行工具变得容易;根据我的经验,您的服务需要实现服务(un)安装程序。

在您安装并真实地检查您的服务后,几乎可以肯定地想要在某个时候卸载它 - 例如然后将其最终版本安装到非开发位置,或仅清理乱丢已安装服务列表的开发服务条目。在sc deleteinstallutil /u中有相应的选项 - 与上面有关安装选项的解释相同。

我已经写了more有关卸载&安装Windows服务,你可能会发现有趣和/或有用的一些细微之处 - 如果你决定走这条路特别是实现服务(UN)安装程序。

+0

太棒了!这样做了,现在在服务窗格中列出。当我启动服务时,它表示服务已启动,但由于未被任何其他程序或服务使用而停止服务?我如何测试服务工作? – 2013-05-09 06:37:33

+0

@JibranKhan:很高兴听到它。请记住我的答案,如果你愿意的话。我会跟进一条评论,指出你正确的方向来测试你的服务。 – J0e3gan 2013-05-09 06:44:29

+0

@JibranKhan:如果您的服务写入数据库或文件,测试它的最简单方法是在数据库或文件中查找输出。服务通常本质上并不依赖于用户界面;但是如果您的服务作为本地系统(管理工具>服务,然后是服务属性中的登录选项卡)运行,以便您可以显示消息框(即MessageBox.Show),则还可以将服务配置为与Windows桌面交互。为了现实检查。有点干净,您还可以将信息事件写入Windows事件日志或调试输出中,您可以使用Sysinternals DebugView(免费)获取信息事件。 – J0e3gan 2013-05-09 06:54:38

2

您必须安装该服务。这可以很容易地与installutil完成在.NET框架的文件夹是这样的:

installutil yourproject.exe 

如果再要调试的服务只是通过“调试”从Visual Studio将其固定 - “附加到进程”。有关更多详细信息,请参阅: http://msdn.microsoft.com/en-us/library/sd8zc8ha.aspx

+1

试过但没有成功,仍然没有在服务部分列出的服务。 – 2013-05-09 06:15:40

+0

@JibranKhan:您的服务可能不会像“System.Configuration.Install.Installer”一样实现服务(un)安装程序。请参阅[我的相关答案](http://stackoverflow.com/a/16293612/1810429)或[代码项目文章](http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows -Service-in-C)链接其中以获取更多信息;或者只是使用'sc create',正如我在回答这个问题时所描述的那样。 – J0e3gan 2013-05-09 06:34:18