Introduction: Optimizing Windows for Embedded Systems!

I love using a Windows PC as the "brain" for my automation projects. It is so much more versatile than any arduino, raspberry pi or those other Linux microcontrollers.

A Windows PC with the Labjack U3-HV and FLOWSTONE makes a powerful combination for home or mobile automation. Here is an example of the system I did for my home.

https://www.instructables.com/id/Creating-a-home-automation-system/

When using a PC in this regard, since it is mainly used to monitor/control systems or processes, it is actually an embedded system (although a high end and more costly version).

The PCs I have created running FLOWSTONE and interfaced to a Labjack U3, all have my own custom version of Windows (i.e. stripped of several components) to allow far less install disk space and RAM usage. I demand absolute stability and guaranteed boot for these machines. Mind you, these machines are typically not used by people for entertainment or productivity; they are standalone systems that perform a specific job (although the machines are more than capable for all tasks).

Read on for the critical steps I did to tweak Windows for use in my embedded systems. Even though I used my own version of Windows 8.1, any versions of Windows 7 to 10 will work with the following tweaks.

Step 1: Fully Disabling UAC.

User Account Control has no advantage to an embedded Windows PC. In fact, a normal use PC is hindered by its annoying limitations. Once a user is responsible and doesn't install questionable software and has a good antivirus package, UAC is simply not desired.

To fully disable UAC, press the Windows key and R, then type cmd. If you do not have administrative rights then you will have to run cmd.exe as the administrator.

Copy and paste into the cmd window the 4 following pieces of code then press Enter after each then reboot after the last one.

reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA
/t REG_DWORD /d 0 /f

reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v
ConsentPromptBehaviorAdmin /t REG_DWORD /d 0 /f

reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v
ConsentPromptBehaviorUser /t REG_DWORD /d 0 /f

reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
/v EnableInstallerDetection /t REG_DWORD /d 0 /f

Step 2: Disabling Boot Recovery and Checks.

An embedded system operating in a remote location must always be on. If I give a command to remotely reboot, I want that system rebooted and back into Desktop mode ASAP. I want no disk checks or recovery options menu. It is mandatory to have the FLOWSTONE executable up and running ASAP! All my systems use SSDs so I don't care about the standard HDD checks.

To disable all startup checks, run the cmd.exe (in administrator mode if necessary) and copy paste the 2 following codes. Press Enter after each then reboot after the last one.

bcdedit /set {current} bootstatuspolicy ignoreallfailures

bcdedit /set {default} recoveryenabled No

Step 3: Making It Easier.

To make life easier, all the dos commands in the previous steps I have put into a batch file. Using this batch file, you can quickly make the changes and then reboot your system to have the new settings in effect.

Now any windows PC can be made more receptive for handling automation tasks associated with real world interfacing.