关于通过windows服务启动外部程序的问题

zt117 2017-03-05 09:54:59
我编制了一个软件A,想通过一个Windows服务B来定时检查该软件A是否在运行,如果没运行就启动软件A。

因为安全的问题,服务B启动软件A的时候,进程当中有软件A,但不出现A的界面。

查找度娘,可以通过Cjwdev.WindowsApi实现启动软件A并且带界面的功能。

我现在的问题是:Cjwdev.WindowsApi只能在win7中解决不出界面的问题,我部署到Windows Server 2012中还是不出软件A的界面,只有A的进程。

请教高手们:如何解决Windows Server 2012中windows服务启动外部程序不出界面的问题?
...全文
257 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
其实也就几个API的事儿,干嘛偷懒直接用别人封装好的? http://www.cnblogs.com/gnielee/archive/2010/04/08/session0-isolation-part2.html 把上面文章中的WTSGetActiveConsoleSeesionId()改用WTSEnumerateSession并判断就好,自己去MSDN一下这个API吧,给代码是害你,自己去摸索下,绝对没坏处
  • 打赏
  • 举报
回复
我猜是由于没有给对SessionId导致没有按照预期来运行(而是运行在另一个控制台会话中) 之前碰到过在Win8中用WTSGetActiveConsoleSeesionId()获取当前用户会话,出错的问题,通过WTSEnumraterSession发现有两个Sessio的状态都是Active,前者获取的是控制台的,查资料说是虚拟设备的会话,而另一个才是当前用户的,后来就没用前面那个取了 我猜Cjwdev.WindowsApi中也是用的WTSGetActiveConsoleSeesionId,而且网上好多都千篇一律的用的这个,特别是后出来的系统版本,估计都没怎么测试,包括本地登陆,域登陆,远程桌面登陆等几种情况
Poopaye 2017-03-06
  • 打赏
  • 举报
回复
服务器程序要界面做什么?给谁看呢?
by_封爱 版主 2017-03-06
  • 打赏
  • 举报
回复
我在想 如果你的"PC"是在注销的状态下. 服务是运行的 你能启个进程??? 所以要么你就别弄什么服务 弄几个exe 要么 看你所谓的那个"进程"或者"服务"是否有什么接口之类的
crystal_lz 2017-03-06
  • 打赏
  • 举报
回复
服务本来就是没有UI的啊
  • 打赏
  • 举报
回复
这是 window vista/window7 以后的新改变的“服务器规矩”。人家微软不是吃干饭的,这个不是假的规则。 你设计程序,如果是服务器程序,那么就没有界面,运行在 Sesson 0。 如果你要界面操作,那么就远程登录到服务器,手动打开一个桌面程序,然后再以“锁定”桌面方式退出服务器。

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧