用户登录前启动控制台应用程序

时间:2012-03-11 15:39:17

标签: c# sql-server console-application scheduled-tasks startup

我有一个C#控制台应用程序,它与SQL Server数据库交互,我想将其配置为在系统启动时和用户登录之前启动。我的应用程序是一个无限循环,它从/向数据库读取/写入数据(在处理之后),并将日志消息写入控制台窗口。

我试过Windows任务调度程序。该应用程序启动,但我有两个问题:

  1. 应用程序无法访问数据库(错误消息:“无法打开数据库”MyDataBase“登录请求。登录失败。”从日志文件中提取)
  2. 当我登录到Windows时,我无法检索应用程序控制台,并且它没有在任务管理器的进程列表中找到。
  3. 我真的不知道这个问题是否在Windows中有解决方案(或者可能是解决方法),但我确实需要它,因为服务器位于一个遥远的位置,我们在该区域遭受电源切断,所以我必须定期检查它并在每次发生截止时启动我的应用程序。

    感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我怀疑这里要做的就是使用两个程序。首先,Windows服务在启动时启动,并在失败时重新启动。此服务可能需要连接SQL服务器凭据(不是Windows凭据)或在有权访问数据库的服务ID下运行。第二个程序将从用户登录开始,并将从Windows服务读取/显示任何日志消息。本质上,它在服务编写的日志文件中的功能类似于“尾部”,但您可以提出更复杂的记录器注册过程,以便它可以直接从服务接收消息。

答案 1 :(得分:1)

您可能希望重构您的应用以成为Windows服务。您将不得不忍受这样一个事实,即您无法直接“访问”应用程序本身。通常,您需要创建一个可以管理服务的配套应用程序。想想你在Windows上熟悉的服务...... IIS,SQL Server等......在高层次上,它们都以这种方式工作。