打不开的exe服务 浅谈Windows远程桌面的那点事

系统 Windows
无关管理员的喜好,企业的服务器端应用往往会在Windows和Linux服务器的混合环境上运行。然而,有的程序发布到Windows服务器上之后,在远程桌面连接的时候会发现程序窗口界面打不开。在本文中,张宴以金山最近代理的几款游戏为例,介绍在远程桌面下如何解决这个问题。

 [文章作者:张宴 本文版本:v1.0 ***修改:2011.06.28 转载请注明原文链接:http://blog.s135.com/windows_mstsc/]

个人不喜欢服务端程序,以 Windows 操作系统作为运行平台,但是,很多时候,迫于环境现状,需要让自己的程序实现跨平台。

在开发全新的金山游戏运营平台时,发现:虽然大部分游戏,服务端程序运行在 Linux 服务器,但是,仍有例外。几款最近代理的游戏,服务端运行在 Windows 服务器上。西山居开发的游戏,服务端集群架构,既有 Windows 服务器,又有 Linux 服务器。

点击在新窗口中浏览此图片

游戏运行系统的 Knose 程序,我最初是在 Linux 下开发的,后来才实现了兼容 Windows 的跨平台版本。

点击在新窗口中浏览此图片

在 Linux 下,Knose 为“父子进程+指令处理线程池+独立功能多线程”结构;在 Windows 上,将 Knose 父子进程结构,拆分成了 knose_daemon.exe(Service 服务程序)和 knose.exe(主程序),由 knose_daemon.exe 启动 knose.exe。

点击在新窗口中浏览此图片

遇到了问题:按照运营维护需求,knose.exe 以及通过它启动的游戏服务端进程,需要有“窗口界面”,显示在桌面中。而 knose_daemon.exe 是以服务方式运行的,无窗口界面,knose_daemon.exe 启动的 knose.exe,窗口界面没有弹出来。

为了解决这个问题,我在 install.bat 中,用了 Windows 的 sc 命令,将 knose_daemon.exe 启动为系统服务,“type= interact type= own”设置了“允许桌面与服务交互”。在本机(Windows XP SP3)测试,knose.exe 的窗口界面以及通过它启动的游戏进程窗口界面,都弹出来了。

@echo off
sc create "KingeyesKnose" binPath= "%CD%\knose_daemon.exe" DisplayName= "Kingeyes Knose Daemon" start= auto type= interact type= own
sc description KingeyesKnose "金山游戏运营系统 KingEyes Knose 守护进程。"
sc start KingeyesKnose

点击在新窗口中浏览此图片

于是将程序发布到 Windows Server 2003 服务器上,远程桌面连接上去,发现 knose.exe 的窗口界面始终弹不出来。

后来,同事发现,原来是“远程桌面”惹的祸:

远程桌面客户端 mstsc 有一个 /console 参数,模式等同于本地终端显示器登录,/console 不会去占用非 /console 远程桌面,远程桌面允许两个正常连接和一个控制台/console方式连接,并且正常连接和 /console 连接的桌面操作不能相互看见,只有通过 /console 参数远程桌面连接到 Windows 2003 服务器,才能够看到弹出的 knose.exe 窗口界面。

在 Windows XP SP3 以上版本,/console 参数改名为 /admin,需要用 mstsc /admin 启动远程桌面:

点击在新窗口中浏览此图片

连上后,终于能够看到由 knose_daemon.exe 启动的 knose.exe 程序窗口,以及由 knose.exe 启动的游戏服务端进程窗口了。

【编辑推荐】

  1. 微软远程桌面服务使用详情白皮书
  2. 专题:Windows远程桌面应用
  3. 发挥Windows Server 2003远程桌面的作用
责任编辑:yangsai 来源: 张宴的博客
相关推荐

2009-01-11 09:59:30

远程服务摩卡远程管理

2011-01-10 16:04:01

windowslinux远程

2015-09-01 15:12:45

JavaHashMap那点事

2010-08-04 09:43:29

远程桌面连接

2013-05-23 11:37:07

Windows SerWindows Ser

2018-10-09 09:20:43

修复windows远程桌面

2010-03-04 09:02:40

Windows 7远程桌面

2011-08-31 10:15:48

桌面管理软件

2013-11-19 20:07:18

远程桌面文件文件传输

2017-02-13 10:00:39

Windows远程桌面

2021-01-14 11:03:10

Windows工具微软

2019-07-31 14:48:03

Windows 10远程桌面黑屏

2010-03-04 09:06:23

远程桌面

2012-07-18 09:23:42

桌面虚拟化

2013-11-01 10:33:59

2011-03-31 09:27:27

2009-11-19 13:36:45

2017-03-10 14:55:14

2016-10-24 09:31:37

Windows 10远程桌面连接
点赞
收藏

51CTO技术栈公众号