在C#中使用接口创建Windows服务的理想解决方案

The ideal solution to create a windows service with interface in C#

我正在创建一个简单的出勤应用程序,它有一个简单的界面(有两个输入框和一个提交按钮)和一个在后台运行的Windows服务。

其思想是捕获登录/注销事件并相应地计算小时数。问题是如何创建一个可以在后台运行但也有一个用户添加其标识的界面的Windows服务?

谢谢


你不需要Windows服务。拥有与用户界面交互的Windows服务将是一项复杂的任务。您不能直接从Windows服务打开UI并在用户桌面上显示它,因为它会导致安全风险。

我建议你创建一个Windows应用并在Windows启动时执行它。您可以在Windows启动时轻松调用exe。只需将应用程序名和exe路径设置为将在OS启动时执行的以下注册表项。

1
2
3
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\
un"
, true);
key.SetValue("Your Application Name", @"Your application path.exe");

编辑

获取当前登录的用户名

1
string loggedInUser = Environment.UserName;