调试时,Application.Run()正在调试在Windows服务中,但在安装服务后,它无法正常工作

时间:2018-03-20 06:20:16

标签: c# windows-services

我正在尝试在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

1 个答案:

答案 0 :(得分:0)

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

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

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

请查看此MSDN article