代码之家  ›  专栏  ›  技术社区  ›  Lichoniespi

冷重新启动后运行另一个应用程序的Windows 2008R2服务

  •  0
  • Lichoniespi  · 技术社区  · 12 年前

    我正在开发适用于Windows Server 2008 R2(.NET 3.5.1)的应用程序,该应用程序即使在冷重新启动后也能正常工作,而不需要有人登录服务器上的任何帐户。

    关于应用程序本身,它是用c#应用程序编写的,用于注册公司员工的工作时间。用户(员工)的卡片正在被条形码扫描仪扫描,每次扫描都意味着“工作开始”或“工作停止”,所有东西都被序列化到xml文件中,然后修改并放入.csv中,但这无关紧要。

    条形码扫描仪就像键盘一样工作,所以所有的代码都像从键盘上“键入”到电脑上一样。尽管控制台应用程序不在焦点上,或者根本看不见,但我还是让应用程序读取了键。

    我需要做的是使该应用程序即使在冷重启后也能工作,它必须是完全自动的。

    到目前为止,我已经找到了两种方法,一种是创建一个服务,让另一个进程保持活力(如果它不起作用,就打开它),我在这方面运气不好,我已经创建了一个服务来为我启动另一个程序,但这个进程的工作方式不同,如果我自己运行它,这个过程没有沟通,所以我甚至无法判断它是否正确。

    另一个是将我的应用程序放入registery/microsoft/windows/current-version/run,并为权限有限的用户启用自动登录。这实际上是可行的,但不是完美的解决方案,因为毕竟我们不想让用户全天候登录公司的服务器,对吧?

    我知道你们大多数人在编程方面比我更有经验,所以我会告诉任何解决方案如何解决我的问题

    利孔尼斯皮

    2 回复  |  直到 12 年前
        1
  •  0
  •   Jirka Hanika    12 年前

    您的选择取决于系统的物理安全性(除了扫描条形码之外,路人是否可以对它做很多事情),但让我们假设它是一个易于访问的桌面。在这种情况下,您可能不想要登录的用户。

    使用服务方法。访问键盘不需要单独的过程。创建类型为的全局钩子 WH_KEYBOARD_LL

    声明回调函数 like this 并将其与 SetWindowsHookEx

        2
  •  0
  •   Rafael    12 年前

    我将使用第一种方法,创建一个服务,并使用网络套接字或管道与正在运行的应用程序通信。对于该服务,请确保您使用的是现有的用户帐户(而不是系统),并允许它与桌面交互。