过期罐头电脑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2705|回复: 0
收起左侧

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

[复制链接]
狂鼠 2011-5-14 02:02:31 | 显示全部楼层
个人不喜欢服务端程序,以 Windows 操作系统作为运行平台,但是,很多时候,迫于环境现状,需要. 让自己. 的程序实现跨平台。
在开发全新的金山游戏运营平台时,发现:虽然大部分游戏,服务端程序运行在 Linux 服务器,但是,仍有例外。几款最近代理的游戏,服务端运行在 Windows 服务器上。西山居开发的游戏,服务端集群架构,既有 Windows 服务器,又有 Linux 服务器。
201172145047659.png

游戏运行系统的 Knose 程序,我最初是在 Linux 下开发的,后来才实现了兼容 Windows 的跨平台版本。
201172145047659.png
在 Linux 下,Knose 为“父子进程+指令处理线程池+独犯罪 能多线程”构造 ;在 Windows 上,将 Knose 父子进程构造 ,拆分红 了 knose_daemon.exe(Service 服务程序)和 knose.exe(主程序),由 knose_daemon.exe 启动 knose.exe。
201172145047659.png

遇到了问题:依照 运营维护需求,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
201172145047659.png

于是将程序发布到 Windows Server 2003 服务器上,远程桌面连接上去,发现 knose.exe 的窗口界面一直 弹不出来。
后来,同事发现,原来是“远程桌面”惹的祸:
远程桌面客户端 mstsc 有一个 /console 参数,模式同等 于本地终端显示器登录,/console 不会去占用非 /console 远程桌面,远程桌面允许两个正常连接和一个控制台/console方式连接,并且正常连接和 /console 连接的桌面操作不能互相 看见,只有通过 /console 参数远程桌面连接到 Windows 2003 服务器,才可以 看到弹出的 knose.exe 窗口界面。
在 Windows XP SP3 以上版本,/console 参数改名为 /admin,需要. 用 mstsc /admin 启动远程桌面:
201172145047659.png

连上后,终于可以 看到由 knose_daemon.exe 启动的 knose.exe 程序窗口,以及由 knose.exe 启动的游戏服务端进程窗口了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

一键重装系统|雨人系统下载|联系我们|网站地图|过期罐头电脑论坛

GMT+8, 2024-11-9 09:45 , Processed in 0.049052 second(s), 29 queries .

官方免责声明:本站内容来自网友和互联网.若侵犯到您的版权.请致信联系,我们将第一时间删除相关内容!

Powered by Discuz!

专注于win7_win10_win11系统下载装机

© 2010-2023 GQGTPC.Com

快速回复 返回顶部 返回列表