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



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

 protected override void OnStart(string[] args)
        {
            _hookID = SetHook(_proc);
           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 服务禁用了桌面交互。要访问桌面或任何其他相关的UI内容,您需要使用复选框"允许服务与桌面交互"来更改服务的安全设置(但我不能告诉您这是否适合您,因为您真的可以检查用户输入的密钥(。

另请查看此 MSDN 文章。

最新更新