@CodeCaster 是对的。WCF 服务本身不会公开 UI。但是,正如您所说,您的应用程序能够以批处理模式运行;在这种模式下,它仍然显示一个 UI。
可能有一种方法可以让 WCF 服务以批处理模式启动和运行这个 GUI 程序。您需要创建一个运行服务的 Windows 用户帐户。创建 WCF 服务并将该服务安装为 Windows 服务后,从管理工具中打开服务小程序。右键单击该服务并选择Properties。然后单击登录选项卡并指定您为服务创建的 Windows 用户帐户的用户名和密码。(当然,Windows Server 2008 R2 和 2012 有新的服务帐户也可以解决问题。)
这种情况的问题是,您必须为您创建与桌面交互的用户帐户提供权限。这是一个安全问题,因为您可能有一个管理员级别的帐户(取决于您如何设置它)自主运行并有权与桌面交互。
这种方法的另一个问题是,如果 GUI 程序需要任何类型的用户输入(即发生错误或显示对话框),服务帐户将无法单击任何按钮或确认任何内容。这就是不鼓励这种方法的原因。
如果程序是用 .NET 编写的并且是您公司的内部代码,您可以尝试将 ILDASM 转换为程序二进制文件或使用 ILSpy 或 Red Gate 的 .NET Reflector 等工具对程序进行逆向工程并将其拆分为组成部分(假设代码没有被混淆)——一个提供批处理的服务 DLL,以及当您想要交互式运行程序时的 GUI。然后可以重新使用服务 DLL(如@CodeCaster 所说)通过您将创建的 WCF 服务以“批处理”模式运行逻辑,同时避免与运行当前程序所需的桌面权限进行讨厌的交互图形用户界面。
这并不是一个完美的答案(如果有答案的话),但我希望它有所帮助。