首页 / 知识
关于用户界面:如何在上作为服务运行Windows GUI应用程序?
2023-04-14 18:40:00

How can I run a Windows GUI application on as a service?我有一个现有的GUI应用程序,应该作为服务实现。基本上,我需要能够远程登录和注销Windows2003服务器,并保持这个程序的运行。 这是可能的吗? 编辑:在此进一步细化…我没有源,这不是我的应用程序。 Windows服务不能有gui,因此您需要去掉gui或将应用程序分成两部分-一个没有ui的服务和一个"控制器"应用程序。如果您有源代码,将非GUI代码转换为服务很容易——Visual Studio有一个"Windows服务"项目类型,它负责为您进行包装,还有一个简单的演练,演示如何创建一个将负责安装的部署项目。 如果您选择第二个路由,并且需要将一些原始的GUI代码放入控制器,则控制器和服务可以通过WCF,.NET远程处理或纯套接字连接与您定义的协议进行通信。如果您使用远程处理,请确保使用一个"厚重"的接口来传输尽可能少的方法调用数据-每个调用都有相当多的开销。 如果用户界面相当简单,那么您可以不必使用配置文件作为输入和日志文件,也可以使用Windows事件日志作为输出。 是否有人使用过第三方产品,如:始终向上? 似乎在做我需要的。它能够在我需要的登录/注销周期中持续运行。并且能够忽略它是一个GUI应用程序并运行它。 他们必须手动链接到exe并调用winmain或其他东西。 您可以将它包装成srvany,尽管您可能需要为它分配一个实际的用户帐户(与localservice或某些类似的帐户不同)。 我对温斯有很好的经验。我可以很容易地将批处理文件转换为使用它的服务。 根据这个答案,我也把它用于nginx。 你真的需要它作为一个服务运行吗,或者你只是需要它在你没有连接的时候保持运行吗?如果是后者,您可以断开连接而不是注销,应用程序将继续运行。选择关机后,该选项应在下拉列表中,或者您可以调用tsdiscon.exe。 FireDaemonPro将大多数图形用户界面应用程序转变为服务;这不是免费的,但可能值得一试。 您可以使用Servicemill来完成此操作。基本上,您在服务器上安装ServiceMill服务器。然后单击可执行文件上的右键,然后单击"作为服务安装"。接下来,您将配置一些东西(用户/密码,如果您想与桌面交互,或者如果您想隐藏UI…并将启动模式设置为自动)。 另一个来自active+软件的工具可以是一个解决方案servicemill exe builder,它允许您从命令行创建服务,如果您使用持续集成服务器,或者如果您计划将组件作为服务分发,而不必考虑服务集成(加上它是免版税的)。 如果创建一个服务会发生什么。该服务配置为与桌面交互。将其配置为运行某个用户并自动启动。来自此其他应用程序上的服务CreateProcess。我猜这很快就可以用C(C/C + +)代码,如果我记得的话,即使是一个服务也有很多代码。这样行吗?? 但是! 我的第一个想法是在服务器类虚拟主机(如虚拟服务器、虚拟机、vmware)中创建虚拟计算机。这些虚拟机将作为服务运行(或者无论HyperV做什么)。虚拟机将始终在运行-无论是登录还是注销。 让这个虚拟计算机自动登录到Windows(TweakUI可以设置它),然后使用启动文件夹的快捷方式启动GUI应用程序。你甚至可以使用程序的图形用户界面(我敢打赌永远都不能做到这一点)。 一个服务不应该有一个GUI,因为它应该在不需要任何用户干预的情况下运行,并且在查找和与正确的用户桌面通信时存在各种各样的问题。 因为,可能要求这样做的原因是能够远程监控应用程序,所以实现这一点的方法是拥有两个应用程序。服务端(基本上写为控制台应用程序)和客户机/监控GUI端。服务将使用一些远程连接(当我这样做时,我使用命名管道)与客户机/监控应用程序通信。任何一个都应该能够在没有另一个的情况下运行,当然,服务应该能够在没有客户机的情况下运行。 首先,我必须问一下为什么您的服务需要用户界面。很可能不是,但您可能需要一个从该服务获取数据的客户机。服务通常没有GUI的原因是它们可能没有运行的窗口环境。服务可以在没有用户登录到计算机的情况下启动和运行。在这种情况下,没有桌面可供服务GUI运行。 已经说过,可以根据马克的建议,将服务的属性设置为以用户身份运行。您还可以在服务的属性中指定"允许服务与桌面交互"。只有当您知道某个用户将登录时才执行此操作。 你有消息来源吗?在许多情况下,独立应用程序和服务之间的差异是最小的。 大多数更改都与正确地将代码挂接到服务管理器有关。一旦完成,您将知道发生的任何问题都是您的编程的结果,而不是任何其他程序的结果。 |
最新内容
相关内容
linux中启动服务命令?
linux中启动服务命令?,服务,系统,命令,信息,工作,设备,网络,标准,名称,密码,linux如何启动服务1、具体步骤如下:首先,我们需要修改mysql的配置文linux运行vim命令?
linux运行vim命令?,系统,工具,官方网站,模式,基础,数据,代码,环境,入口,命令,如何使用Linux系统中的Vim编辑器1、vim编辑器的三种模式:一般模式linux服务器保存命令?
linux服务器保存命令?,时间,状态,档案,电脑,命令,信息,位置,编辑,文件,模式,Linux的vi编辑后如何保存?1、按ESC键回到命令模式,输入:w保存即可,或linux服务器扫盘命令?
linux服务器扫盘命令?,地址,工作,命令,目录,数据,单位,名称,系统,管理,信息,Linux常用命令有哪些1、linux常用命令如下:查看内核版本:uname-a。linux自动运行命令?
linux自动运行命令?,服务,系统,时间,代码,周期性,第一,命令,管理,在线,状态,linux计划任务(自动化执行任务的利器)1、Linux计划任务是一种自动linux开启运行命令?
linux开启运行命令?,系统,服务,工作,管理,状态,命令,标准,情况,环境,工具,linux中如何开机启动运行指定的应用程序或指令?1、开机启动时自动运linux运行wps命令?
linux运行wps命令?,软件,官网,名称,时间,电脑,系统,工具,环境,项目,数据,wps支持linux命令行下word转pdf吗?1、通过浏览器进入到wps官网,然后点linux服务器搭建命令?
linux服务器搭建命令?,系统,服务,软件,地址,平台,在线,密码,工具,环境,百度,linux下简单快速的搭建ftp服务器环境具体步骤如下:检查安装vsftpdlinux运行cmd命令?
linux运行cmd命令?,电脑,系统,状态,情况,环境,命令,单位,管理,设备,数据,电脑运行命令怎么打开电脑运行命令需要同时按下“win图标”键和“R”服务器重启命令linux?
服务器重启命令linux?,工作,标准,设备,服务,系统,名称,命令,百度,网络,密码,怎么使用linux命令重启服务器1、shutdown。poweroff。init。reboolinux服务端常用命令?
linux服务端常用命令?,工作,地址,系统,网络,基础,命令,标准,工具,信息,管理,linux常用命令linux系统常用操作命令如下:ls:全拼list,功能是列出目linux运行两个命令?
linux运行两个命令?,网络,地址,系统,工作,暂停,命令,网站,密码,网上,入口,Linux下必须知道的11个网络命令1、netstat -r:打印路由表。路由表保