If you switch to Session 0 on Windows 10, Server 2016 or Server 2019 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 Zero.


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.

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();
  }
}


Windows 10 Version 1803+ and Server 2019

Microsoft has removed the Interactive Services Detection Service entirely on Windows 10 Version 1803 and later and Windows Server 2019. Please consult our article about this change. You will need to use FireDaemon Zero and ZeroInput to restore keyboard and mouse on Session 0 on these operating system versions.


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. Microsoft also offers Windows LTSC. This is a version of Windows that is not subject to feature updates and only receives security updates. You might want to consider deploying a version of Windows LTSC which still retains the Interactive Services Detection service.


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

FireDaemon ZeroInput is a free driver that restores keyboard and mouse functionality on Session 0 on Windows 10, Server 2016 and Server 2019. You will most probably have to use it in conjunction with FireDaemon Zero.