If you switch to Session 0 on Windows 10 or Server 2016 your keyboard and mouse will not work. All keyboard presses and mouse movements will be ignored. This limitation is intentional on Microsoft's part and is NOT a limitation imposed by FireDaemon Pro or FireDaemon Session 0 Viewer.


Why Has Microsoft Done This?

As mentioned, this is intentional on Microsoft's part. Based on technical correspondence we had with Microsoft this is "intentional", "by design" and for "security reasons". We had no luck eliciting the exact "security reasons" from Microsoft. Our opinion is that whilst Microsoft has every right to make changes to their operating systems, the rationale behind this change is obscured by the fact that Microsoft already has a sizeable fleet of desktop and server operating systems in the field with this functionality enabled. Additionally it's trivial to workaround (see Workarounds below).

Can I Ask Microsoft To Fix This?

You can try. If you have a Microsoft Contract ID you can try submitting a Microsoft Premium Support Ticket and request a "design change" or "design restore". Microsoft advised us that a Bug ID has been assigned to this issue. Additionally Microsoft advised us that there is no ETA in regard to a Hotfix nor for any resolution as part of a Windows Monthly Rollup at any point in time in the future.


What Has Microsoft Changed?

Microsoft has made changes to the system device driver win32kfull.sys. Specifically, the two functions RawInputThread (for keyboard input) and xxxDesktopThread (for mouse input). For simplicity's sake, the code on Windows 8.1 and Server 2012 R2 or earlier looked like this:


mouseInputThread()
{
  processMouseInput();
}


The Windows 10 and Server 2016 function now looks like this:


mouseInputThread()
{
  if (sessionId != 0)
  {
    processMouseInput();
  }
}

Workarounds

Workaround 1: Use An Earlier Version of Microsoft Windows

If you need your keyboard and mouse to work on Session 0 simply use an earlier version of Windows (ie. Windows Vista through Windows 8.1 or Server 2008 through Server 2012 R2). Clearly this option might not be all that practical given you will have to reinstall your operating system.


Workaround 2: Deploy FireDaemon Restore - Our Session 0 Keyboard and Mouse Input Restoration Driver

FireDaemon Restore is a driver that patches a specific Windows kernel driver to restore keyboard and mouse functionality on Session 0 on Windows 10 and Server 2016.


Workaround 3: Install TightVNC or RealVNC and VNC To Your Computer Instead

Disclaimer: TightVNC and RealVNC are NOT a FireDaemon Technologies Limited software products. FireDaemon Technologies Limited does not develop, promote or support TightVNC or RealVNC. FireDaemon Technologies Limited does not receive any remuneration from nor is affiliated with the authors of TightVNC or RealVNC in any way. The technical guidance below is provided as is, without any warranty or guarantees and is for informational purposes only. This information is supplied in an attempt to show that there is a possible technical workaround to the Microsoft imposed technical limitation of keyboard and mouse not working on Session 0 on Windows 10 or Server 2016.


Before attempting this workaround, you should:

  1. Thoroughly familliarise yourself with VNC
  2. Very carefully consider the security ramifications of installing an additional remote control tool such as TightVNC on your computer.

If you are comfortable with VNC and are happy installing it on your computer, then go ahead and download and install TightVNC. Complete the following steps:

  1. Install TightVNC Server on your Windows 10 or Server 2016 computer
  2. Install TightVNC Viewer on the computer you intend to connect from, in order to remote control your Windows 10 or Server 2016 computer where TightVNC Server is installed
  3. Once TightVNC is completely installed, configured, secured and setup to your liking, simply launch TightVNC Viewer on your local computer and connect to your Windows 10 or Server 2016 computer
  4. Once you have connected and logged into your Windows 10 or Server 2016 computer, try switching desktop to Session 0 via FireDaemon Pro, FireDaemon Session 0 Viewer or via the built in Microsoft Windows Interactive Services Detection popup
  5. Your keyboard and mouse should now work again on Session 0.

We have tried other VNC based products but found that RealVNC and TightVNC are the only two products to work properly. Please refer to this RealVNC article as you have to tweak the RealVNC Server service's setup to make it work properly. TigerVNC and UltraVNC disconnected and crashed respectively when attempting to switch to Session 0. If you have success switching to Session 0 with another VNC based product please let us know!


Below is a screenshot showing the keyboard and mouse working on Session 0. winver.exe and notepad.exe are launched on Session 0 as separate FireDaemon Pro services.