What Is This Sorcery?

With the release of Windows 10 and Server 2016, Microsoft decided to block keyboard and mouse input on Session 0. So if you have an interactive Windows service running on Session 0, your keyboard and mouse will not work and you will not be able to interact with your application. For more information please refer to our comprehensive discussion on the matter. Additionally, with the release of Windows 10 1803 and Server 2019 Microsoft decided to remove the Interactive Services Detection Service entirely from the operating system.


So, behold, we created FireDaemon ZeroInput. This is a driver that restores the keyboard and mouse functionality on Session 0 on Windows 10, Server 2016 and Server 2019. The driver also removes the "blacked out" Session 0 desktop on Windows 10 and Server 2019. FireDaemon Zero works with FireDaemon ZeroInput and detects that the driver is present and gives you the ability to remain on Session 0 indefinitely (normally you would be kicked out after 30-seconds).


Warning and Disclaimer

By downloading and installing FireDaemon ZeroInput you fully acknowledge that this software modifies your Windows operating system in order to restore functionality that Microsoft has intentionally removed. As such, you now assume all risk and FireDaemon Technologies Limited will not be liable for any losses or damages as a result. If you have any doubt whatsoever in regard to the usefulness or fit for purpose of this driver then please, do not use itAdditionally, FireDaemon Technologies Limited provides no warranty that ZeroInput will continue to work correctly with any future update to Microsoft Windows 10, Server 2016 or Server 2019 or any future Microsoft operating system.


What Does ZeroInput Cost?

Nothing. It's free. Please read the Warning and Disclaimer above.


Compatibility

This driver is for use with Windows 10, Server 2016, or Server 2019 only. It's not required to be deployed on any other version of Windows. Our deployment matrix summarises when and where you should deploy FireDaemon Zero and ZeroInput.


Test First Before Deploying

Per the Warning and Disclaimer above, we strongly recommend you try this driver in a disposable virtual machine or similar test environment first to ensure it works and meets your requirements prior to deploying into production.


Installation

Phase 1 - Install Windows and / or Patch and Backup

  1. Optionally install Windows 10, Server 2016 or Server 2019
  2. Apply ALL Windows updates - everything
  3. Ensure your operating system is fully backed up to you can completely restore.


Phase 2 - Determine Your Windows Version and Download the Correct Driver

Per the table below choose your driver version based on your operating system version. To determine your operating system version go to Start -> Run -> winver.exe.


Operating SystemVersionArchitectureDriverTest Signing Mode?
Windows 10<= 1909x64 (64-bit)0.0.0.3 SignedNo

<= 1909x86 (32-bit)0.0.0.3 UnsignedYes

>= 2004x64 (64-bit)0.0.0.4 UnsignedYes

>= 2004x86 (32-bit)0.0.0.4 UnsignedYes
Server 2019<= 1909x64 (64-bit)0.0.0.3 SignedNo

>= 2004x64 (64-bit)0.0.0.4 UnsignedYes
Server 20161607x64 (64-bit)0.0.0.3 SignedNo


What Is Test Signing Mode?

To install the driver successfully, you may have to put your operating system in "Driver Test Signing Mode". This means your operating system kernel will load drivers that are not "kernel-mode signed".  Right now only ZeroInput 0.0.0.3 x64 (64-bit) is kernel-mode signed. We don't intend to ever supply kernel-mode signed x86 (32-bit) versions of the driver. ZeroInput 0.0.0.4 x64 (64-bit) in the process of being signed - so hang tight. We don't have an ETA yet. However, you are free to sign it yourself if you have an Authenticode EV Certificate.


Phase 3A: Install the Unsigned Driver

Only do this if you downloaded an Unsigned driver.


In order for the unsigned driver to function, you will need to place your operating system in Driver Test Signing Mode. This will leave a watermark on your desktop and operating system in a state where other drivers could be installed surreptitiously. You have been warned! Now do the following:

  1. Ensure you are logged in as a local or domain administrator
  2. Unpack the ZIP file to a location of your choice
  3. Determine your machine architecture - either x86 (32-bit) or x64 (64-bit)
  4. If you have a 32-bit version of Windows installed copy the file "FDUI0Input.sys" from the x86 folder to C:\Windows\System32\drivers
  5. If you have a 64-bit version of Windows installed copy the file "FDUI0Input.sys" from the x64 folder to C:\Windows\System32\drivers
  6. Open an elevated Windows command prompt
  7. Put your operating system in Driver Test Signing Mode and install the driver. At the command prompt type the following:
bcdedit /set testsigning on
sc create FDUI0Input type= kernel binPath= C:\Windows\System32\drivers\FDUI0Input.sys start= system


Phase 3B: Install the Signed Driver

Only do this if you downloaded the Signed driver.


Please do the following:

  1. Ensure you are logged in as a local or domain administrator
  2. Unpack the ZIP file to a location of your choice
  3. Right-click on the file FDUI0Input.inf and select Install
  4. The driver will be installed and the corresponding FDUI0Input service created automatically.


Phase 4: Install FireDaemon Zero

If you have Windows 10 1803 or later or Server 2019 installed, the Interactive Services Detection Server (UI0Detect) binaries have been removed from the operating system. Hence, you must install FireDaemon Zero to allow you to switch desktop to Session 0. This step is optional on Server 2016 - however, managing Session 0 without FireDaemon Zero is painful. FireDaemon Zero enables interactive services system-wide, updates the UI0Detect service to work with the Zero task tray applet plus gives you an easy way to switch back and forth between your logged in user-session and Session 0.


Phase 5: Install Virtualisation Tools

If your operating system is virtualised please ensure you install or completely uninstall and re-install the corresponding helper tools (e.g. VMware Tools, Virtualbox Guest Additions etc.).


Phase 6: Reboot and Confirm Installation is Successful

Now reboot your computer. FireDaemon Zero is ZeroInput aware. You can query the running state of the ZeroInput driver by typing the following at an elevated command prompt after your computer has rebooted:

cd c:\Program Files\FireDaemon Zero
FDUI0Control query --fdui0input-state


You should see the following output:

Input Driver Details
--------------------
Driver state: running
Status: Desktop switched

You should now be able to switch desktop to Session 0 and see your interactive FireDaemon Pro services running.


FireDaemon Zero plus ZeroInput on Session 0


Removing The ZeroInput Driver

Complete the following steps:

  1. Login as a local or domain administrator
  2. Open an elevated command prompt.
  3. At the command prompt type:
    sc delete FDUI0Input
    bcdedit /set testsigning off

Then reboot your machine.


Upgrading the Driver From 0.0.0.3 to 0.0.0.4

If you upgrade Windows to version 2004 you will need to upgrade. 0.0.0.3 does not work with version 2004. Do the following to upgrade:

  • Uninstall the driver per the step above
  • Reinstall the driver per the instruction above from Phase 1 through Phase 6.


Manual UI0Detect Service Installation

Should you ever want to install the Interactive Services Detection Service (UI0Detect) manually follow these instructions. First, check to see if the UI0Detect service is present via the following command at an elevated command prompt. If the service does not exist you will get an "OpenService FAILED 1060" error.

sc query UI0Detect

To setup the Interactive Services Detection Service manually, do the following:

  1. Login in as a local or domain administrator
  2. Open an elevated command prompt.
  3. At the elevated command prompt type the following three commands to re-create the UI0Detect service.
    sc create UI0Detect start= auto type= own type= interact error= severe binpath= "C:\Windows\System32\winver.exe"
    sc sidtype UI0Detect unrestricted
    sc privs UI0Detect SeTcbPrivilege/SeAssignPrimaryTokenPrivilege/SeIncreaseQuotaPrivilege/SeDebugPrivilege

Note: In the sc create command - we have used winver.exe in the binpath. This is a "stub". sc.exe won't create the service if you supply an invalid binpath. When you install FireDaemon Zero the binpath is updated. Alternately, and if you are feeling really brave, copy over the UI0Detect.exe binary from an earlier version of Windows 10 or Server 2016 to C:\Windows\System32. Then adjust the binpath to read "C:\Windows\System32\UI0Detect.exe". If you do this you will be able to start the UI0Detect service and you should be able to switch desktop to Session 0 via the legacy Interactive Services popup.


Limitations

After applying Windows Updates, you might find your machine is no longer in Driver Test Signing Mode. You will have to enable Driver Test Signing Mode again per the instructions above and reboot. No need to reinstall the driver.


ZeroInput will not work if you enable VBS (Virtualization Based Security) HVCI (Hypervisor Enforced Code Integrity) on your machine. There's no workaround.


Bugs? Issues? Feature Requests?

Tell us what you think! All feedback gratefully received!