熟悉一下windows station的概念windows只有一个交互式(坐在电脑前登陆交互)的station就是win sta0,只有和这个sta0关联的进程才可以和桌面交互。而windows service一般都是以system登陆的(就是console登陆)。这个system用户有和它相关的station,而这个station不是可以交互的station,services不能和桌面交互。再服务选项“允许和桌面交互”里边打上勾试一下

解决方案 »

  1.   

    Starting an Interactive Client Process in C++
    读一下MSDN中的这篇文章
      

  2.   

    这个是安装包应该做的事情,市面上流行的安装软件都可以安装Service吧。如果一定要在自己程序里面改,可以用SCM的一些API,你这个情况OpenService然后ChangeServiceConfig就可以了。
      

  3.   

    我想在打包时,服务安装这个过程中就设置发,如何写程序? 
    Starting an Interactive Client Process in C++
    这文章看过了,不实用! 要用到用户名和密码的,安装软件,不太可能知道管理员密码的
      

  4.   

    CreateService时
    service type选SERVICE_INTERACTIVE_PROCESS即可
      

  5.   

    嗯,不错! 改成 SERVICE_INTERACTIVE_PROCESS | SERVICE_WIN32_OWN_PROCESS果然可以了!