我正致力于Windows Server 2008 R2(.NET 3.5.1)的应用程序,即使在冷启动后也能正常工作,而无需请求某人登录服务器上的任何帐户。
很少有关于应用程序本身的文字,它是用c#应用程序编写的,用于在公司注册员工的工作时间。用户(员工),他们的卡片被条形码扫描器扫描,每个扫描意味着“工作开始”或“停止工作”,所有内容都被系列化为xml文件,稍后进行修改并放入.csv但是没有无所谓。
条形码扫描器正在作为键盘使用,因此所有代码都可以“键入”,例如从键盘到PC。尽管控制台应用程序没有聚焦,或根本看不到,但我还是让应用程序读取了密钥。
我需要做的是即使在冷启动后该应用程序也能正常工作,它必须是全自动的。
到目前为止,我想出了两种方法,一种方法是创建一个服务,让另一个进程保持活着(如果它不工作,只需打开它),我没有太多运气这个,我已经创建了为我启动另一个流程的服务,但是流程的工作方式不同,如果我自己运行它,就没有与流程进行通信,所以我甚至无法判断它是否正确。
另一个是将我的应用程序放入registery / microsoft / windows / current version / run,并为具有有限权限的用户启用自动登录。这实际上可行,但它不是完美的解决方案,因为毕竟我们不希望用户在公司24/7的服务器上登录对了吗?
我知道大多数人在编程方面比我更有经验,所以我会批评任何解决方案如何解决我的问题
Lichoniespi
答案 0 :(得分:0)
我会使用第一种方法,创建服务,并与正在运行的应用程序通信,我将使用网络套接字或管道。对于服务,请确保您使用的是现有用户帐户(而不是系统),并允许它与桌面进行交互。
答案 1 :(得分:0)
您的选择取决于系统的物理安全性(除了扫描条形码外,路人是否可以做很多事情),但我们假设它是一个易于访问的桌面。在这种情况下,您可能不希望登录用户。
使用服务方法。您不需要单独的进程来访问键盘。创建类型为WH_KEYBOARD_LL
的全局钩子。
声明你的回调函数like this并将其与SetWindowsHookEx
一起放置。