接受用C#编写的标准Windows服务的命令行输入的简单方法?

接受用C#编写的标准Windows服务的命令行输入的简单方法?,c#,console,service,design-patterns,interpreter,C#,Console,Service,Design Patterns,Interpreter,我用C语言编写了一个非常简单的Windows服务,它可以自动启动并运行a-OK。我想知道让服务接受命令行输入的最佳方法是什么——它总是来自同一个用户(admin),并且服务本身是完全可信的(LocalSystem) 我对设计模式术语知之甚少——我应该把这个简单的服务包装成解释器样式的模式吗?这是否太复杂了,有没有办法通过程序的入口点来实现?(好像我只是在做一个简单的控制台应用程序,可以使用字符串[]args?) 基本上,它应该接受一些非常特定的语法(特定的命令),这些语法可以在任何时候通过控制台

我用C语言编写了一个非常简单的Windows服务,它可以自动启动并运行a-OK。我想知道让服务接受命令行输入的最佳方法是什么——它总是来自同一个用户(admin),并且服务本身是完全可信的(LocalSystem)

我对设计模式术语知之甚少——我应该把这个简单的服务包装成解释器样式的模式吗?这是否太复杂了,有没有办法通过程序的入口点来实现?(好像我只是在做一个简单的控制台应用程序,可以使用字符串[]args?)

基本上,它应该接受一些非常特定的语法(特定的命令),这些语法可以在任何时候通过控制台发出,并且只接受那些特定的命令(希望避免各种安全问题)


如果这需要澄清,让我知道,并感谢任何建议(甚至解决方案)

我是通过让控制台应用程序修改我的配置文件来完成的,我的服务知道要通过监视文件夹的更改来检查配置文件。

我是通过让控制台应用程序修改我的配置文件来完成的,我的服务知道要通过监视文件夹的更改来检查配置文件。

相反,你可以添加App.Config在项目中,Windows服务可以访问与yourapp.exe.config位于同一文件夹中的app.config

net中的配置在语法和定制方面具有高度的组织性


使用App.config也不需要您更改安装设置。

相反,您可以在项目中添加App.config文件,Windows服务可以访问App.exe.config所在文件夹中的App.config

net中的配置在语法和定制方面具有高度的组织性


使用App.config也不需要您更改安装设置。

根据您的描述,这就是您需要的:

OnCustomCommand事件允许 应用程序与正在运行的 通过传递整数值来提供服务

一旦服务启动,您将发送 使用 ServiceController的ExecuteCommand 方法


根据您的描述,这就是您要寻找的:

OnCustomCommand事件允许 应用程序与正在运行的 通过传递整数值来提供服务

一旦服务启动,您将发送 使用 ServiceController的ExecuteCommand 方法


通常,服务的全部要点是它不需要或不需要命令行输入。如果您更清楚地了解您要做的事情,我们可能会提供更好的帮助。当从命令行调用它时,它是否需要与作为服务运行的同一实例交互?或者它可以是一个完全独立的实例吗?Berry——服务本身是一个基本的看门狗,只用于保持少数程序运行。如果它们因任何原因终止,它将重新启动它们。它以多线程的方式执行此操作。因为它已经非常强大了(就权限而言),所以我真的只需要在它运行时以某种有意义的方式在本地与它通信,完成它的工作。思想?谢谢。Matt Wrock——与它自己的实例交互(我最终还是想成为一个单身汉)是最好的,但不是严格必要的。因为它已经是多线程的,并且没有中断,所以我认为一些获取它输入的方法(同样,希望是从控制台)将是最简单的(其他人也将使用此服务)。我猜我想象它注意到控制台输入,如果它在预定义的语法范围内,就接受它,并生成一个线程,在服务器上执行简单、特定的系统任务。思想?谢谢。通常服务的要点是它不需要或不需要命令行输入。如果您更清楚地了解您要做的事情,我们可能会提供更好的帮助。当从命令行调用它时,它是否需要与作为服务运行的同一实例交互?或者它可以是一个完全独立的实例吗?Berry——服务本身是一个基本的看门狗,只用于保持少数程序运行。如果它们因任何原因终止,它将重新启动它们。它以多线程的方式执行此操作。因为它已经非常强大了(就权限而言),所以我真的只需要在它运行时以某种有意义的方式在本地与它通信,完成它的工作。思想?谢谢。Matt Wrock——与它自己的实例交互(我最终还是想成为一个单身汉)是最好的,但不是严格必要的。因为它已经是多线程的,并且没有中断,所以我认为一些获取它输入的方法(同样,希望是从控制台)将是最简单的(其他人也将使用此服务)。我猜我想象它注意到控制台输入,如果它在预定义的语法范围内,就接受它,并生成一个线程,在服务器上执行简单、特定的系统任务。思想?谢谢。非常有用,但在这种情况下,仅接受整数可能不会很好地工作。非常有用,但仅接受整数在这种情况下可能不会很好地工作。好主意,但我想这需要服务端的大量逻辑来检查配置文件中的参数。可能完全错了。不过,我可能还是要走这条路。好吧,我会把逻辑放在两个地方——控制台应用程序,这样它就不会弄乱格式;消费服务,这样它就不会在执行时爆炸。好主意,但我认为这需要服务端的大量逻辑来检查配置文件中的参数。可能完全错了。不过,我可能还是要走这条路。好吧,我会把逻辑放在两个地方——控制台应用程序,这样它就不会搞砸