C# Application.Run()在Windows服务中调试时工作,但在安装该服务后,它不工作

C# Application.Run()在Windows服务中调试时工作,但在安装该服务后,它不工作,c#,windows-services,C#,Windows Services,我正在尝试在windows服务中编写键盘记录器。所以我使用了Application.Run()方法 我尝试使用installutil.exe命令提示符安装该服务,它显示为: The transacted install has completed. The installation failed, and the rollback has been performed. 如果我删除Application.Run(),则它正在安装,但键记录不起作用。 调用该方法的Application.Run(

我正在尝试在windows服务中编写键盘记录器。所以我使用了Application.Run()方法

我尝试使用installutil.exe命令提示符安装该服务,它显示为:

The transacted install has completed.
The installation failed, and the rollback has been performed.
如果我删除Application.Run(),则它正在安装,但键记录不起作用。 调用该方法的Application.Run()的任何替代方法

private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{

}

请帮助我了解如何使用Application.run()或Application.run()的任何其他替代程序运行以调用函数HookCallBack

我认为您误解了服务的工作方式。服务本身只是来自windows的服务控制器的包装,在windows中处理启动/停止/暂停和其他与服务相关的操作系统命令

您需要在服务内创建一个线程,该线程执行您的应用程序逻辑。之后应该没有问题

请注意,我怀疑您能否通过使用windows服务实现您的目标。默认情况下,由于安全原因,windows服务已禁用桌面交互。要访问桌面或任何其他相关UI内容,您需要使用复选框“允许服务与桌面交互”更改服务的安全设置(但我无法告诉您这是否适用于您,因为您确实可以检查用户输入的密钥)

请也看看这个

private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{

}