C#代码可以调用系统的windows服务吗
windows服务,你指的应该是NT Services服务,也就是那些工具中写服务中的选项。
如果是windows服务控制方面的,那么可以调用sc命令方式或是直接调用都是可以的,这里仅限对某个特定服务的启动/停止等操控。
如果是windows服务内的数据,答案是不可以的,当然,这与语言或开发没有关系的。在windows vista以上的版本中,windows的服务是运行在session 0中的,而应用程序运行在sisseion n(1,2,3 eg.)。所以无法直接调用!
但是,不可以调用,但不是说没有办法了。windows 服务要想与应用程序通信,办法还是有很多的!
第一种办法:传统调用的windows服务,windows服务中有一个属性,是否允许与应用程序交互,如果要调用windows服务必须先将此属性勾选上!当然这是一个必要条件,第二步要做的是如果跨session通信。这个在msdn上有一篇关于windows 7的跨session通过,就是在session 1中跟windows服务通信的一个跨session通信,最终实现了与session 0中的windows服务通信。
第二种办法:交互可以考虑使用wcf的方式,这种方法有点类似于后门程序,但却是微软提倡使用的方式,相较于传统的windows服务交互,这种方式结构较为简单。
第三种办法:数据文件交互,其实与wcf的方式没有多大的区别,但这种交互只是大的方向,适用于批量处理之类的数据进行分批处理。它没有任何技术含量,适用各个异构模块。就算不同系统之间也可以按照这种方式处理!
给你一个连接:网页链接,这就是有关于session 0隔离的原理及交互的方案。