如何控制windows服务从另一个桌面应用程序

本文关键字:服务 另一个 桌面 应用程序 windows 何控制 控制 | 更新日期: 2023-09-27 17:49:25

假设我有一个用c#开发的Windows服务。现在我想用c#开发另一个win应用程序,它控制&与我的win服务交互。假设我想从我的win应用程序启动/停止我的win服务,或者我想从我的win应用程序运行我的win服务的特定方法。如何开发这种类型的赢的应用程序,可以与我的赢服务互动。请详细讨论。

谢谢

如何控制windows服务从另一个桌面应用程序

您可能会发现下面的文章很有用。

启动和停止请参见ServiceController class

http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.aspx

使用ServiceController类进行控制。

让你的服务做一些特殊的事情,由你的应用程序控制,你必须建立一种通信。我建议你的服务监听某个端口的http请求,这可以相当容易地处理,所以你的服务可能由任何类型的应用程序甚至javascript ajax控制。如果不需要,添加一些安全性,如授权。

对于Windows服务和Windows应用程序之间的通信,我使用Windows通信基础(WCF)。在我的Windows服务中,我托管了一个"监听"传入请求的WCF服务。我的Windows应用程序创建了一个WCF客户端,该客户端与托管在Windows服务中的WCF服务通信。从编程的角度来看,WCF客户端调用WCF服务上的方法。所有幕后的复杂性都是隐藏的,所以从程序员的角度来看,它看起来就像你只是做了一个函数调用。

启动和停止服务,我使用ServiceController类。注意,这个类有一定的安全性要求。具有有限系统权限的用户将无法直接使用这个类。

你需要注意安全。

  • 使用ServiceController类为您提供了一些有限的控制服务的能力(启动/停止/暂停/恢复和发送简单的命令),并且具有安全的优点。通常只有管理员(可能还有高级用户)才能控制服务,尽管您可以配置权限。

  • 如果你需要一些更灵活的东西,你需要某种形式的进程间通信来与服务通信——正如Matt Davis的回答所描述的那样,WCF是。net世界中一个很好的选择。

    然而,在这种情况下,您需要实现自己的安全性,假设您不想让任何人与您的服务交互。

相关文章: