解决方案 »

  1.   

    Windows对每个用户登录分配了一个‘会话(Session)’,每个Session可以有多个Window Stations,每个Window Station可以有多个桌面。层次如下:
    Session
    - Windows Stations
    - - Desktops其中,每个Station都拥有各自的剪贴板。因此要拿到用户的剪贴板数据,就要运行在用户所在的Station下。
    但是,Vista或以后的版本,服务被强制运行在Session0(服务隔离),而用户则运行在Session1,2等等。
    因此,服务进程和用户不在同一个Station下,没有办法直接使用用户的剪贴板数据。Session0
    - Service-0x0-3e7$ (服务用的Station)
    - WinSta0 (XP下,服务与用户交互会用该Station)Session1
    - Winsta0
    - - Default (就是你平常看见的桌面)
    - - WinLogon (就是你登陆Windows的桌面)
    - - Secured (就是UAC桌面)Session2 (可能的远程登录)
    Session3 (可能的远程登录)
    ...