Windows服务无法正常工作

时间:2010-04-05 07:40:32

标签: c# .net

我在C#的visual studio 2008中制作了一个Windows服务。在服务内部,我只写了单行代码

 try
 {
     System.Diagnostics.Process.Start(@"E:\Users\Sk\Desktop\category.txt");
 }
 catch { }

然后我添加了项目安装程序&将serviceProcessInstaller1 Account属性更改为本地系统还将serviceInstaller1 start type属性更改为Automatic。 然后我建立了project.it成功。之后,我添加另一个项目,即设置project.i已添加主项目输出&我已将自定义操作添加为“DemoWindowsService(Active)的主要输出”。然后构建setup.setup已成功构建。然后我安装了setup&然后去服务启动service.service正确陈述但它没有执行任务。 我检查了路径是否正确&我也试过

System.Diagnostics.Process.Start(@"E:\Windows\system32\notepad.exe")但结果仍然相同。我尝试了很多但没有得到答案。

3 个答案:

答案 0 :(得分:6)

默认情况下,Windows服务无法与桌面交互,而Notepad是一个交互式应用程序。

如果您打开任务管理器,我怀疑您在启动服务后会看到notepad.exe进程正在运行,并且您的服务正在按照您的想法执行,它只是不可见。

您可以通过在服务 MMC管理单元(Start -> Run -> Services.msc)中右键单击服务来更改服务以与桌面交互,并选中允许服务进行交互Log On标签上的桌面选项。

依赖此选项建议,因为微软已表示将在更高版本的Windows中将其删除。

如果您考虑一下,这是有道理的,因为即使没有人登录到计算机上,Windows服务也可以使用(例如,没有“桌面”可以与之交互)。

答案 1 :(得分:2)

如果它不起作用,那么也许是因为抛出异常。但是,由于您使用try / catch块隐藏了所有异常,因此您永远不会知道什么是错误。

摆脱try / catch块,看看是否有助于你了解错误。

答案 2 :(得分:0)

您是否在服务的OnStart()方法中编写了单行代码? 如果您这样做了,那么将catch块更改为catch (Exception ex)并将异常详细信息写入事件日志以查看异常发生的原因。

请参阅Logging Information About Services