*Edit this makes the theme setting window open at startup I'm looking for a better solution

I was working on this today and came up with a rather simple solution for Windows 10.

Since you can execute theme files, you can add the file to run at startup in the registry or also by adding it to the startup folder I think. I have my theme in a read-only folder on the network and added a startup key on the machine. One drawback of using a startup key is that if you look at the startup list in task manager it shows up as "Program" and if there is more than one you can't tell which is which.

  1. Determine if you want this file locally or on a network share and put it there.
  2. Add a GPO to set the theme for new users Load a specific theme located at User Configuration\Policies\Admin Templates\Personalization
  3. Add a GPO to add a registry key or add the key manually via SCCM or other management software. CMD to add silently: reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v %KeyName% /t REG_EXPAND_SZ /d "%Path%\File.theme" /f
  4. Log out/in and the theme should apply within 30 seconds.

You may want to remove the startup key after a while or you can leave in place to force the theme to re-apply after every sign in.

The problem with applying a theme to an existing user profile is that the registry key for setting the theme is per user. There is no computer level theme setting as far as I can tell. The user level setting is set with CurrentTheme under Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes. Changing the path doesn't seem to change the theme though.

I never found a better solution so I'm using the GPO to apply theme to new user sign-in. For some reason it is not applying all of the settings included in the theme. The slideshow duration is set to 6 hours but new users are set for 30 minutes. I may just add running the theme file to a new user setup script we have and apply it manually for good measure. Another option is a login script you can apply to all users for a time then remove. Or add a logon script to change a system variable when it's applied or check the registry to see if it's applied. There are lots of hacky solutions but nothing provided by Microsoft for existing users unfortunately.