I have seen some partial duplicates on the same topic, but all of those I have seen require a reboot for the installation to take effect. I am trying to download different fonts and install them in batch, double clicking the fonts one by one and clicking install works, but that is of course very slow. I have observed that installing a font is just copying the font to Windows Fonts directory and updating the registry. I used the following code to simulate the process in batch: from fontTools.ttLib import TTFont import winreg import os def list_fonts(folder): result = {} for file in os.scandir(folder): if file.is_file() and file.name.endswith((".otf", ".ttf")): path = file.path.replace("\\", "/") name = TTFont(path)["name"] result.setdefault(name.getDebugName(1), {})[name.getDebugName(2)] = ( name.getDebugName(4), path, ) return result HKLM = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) FONTS_KEY = winreg.OpenKey( HKLM, r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts", 0, winreg.KEY_ALL_ACCESS, ) def install_fonts(folder): for styles in list_fonts(folder).values(): for font_name, path in styles.values(): name = path.split("/")[-1] with ( open(path, "rb") as reader, open(f"C:/Windows/Fonts/{name}", "wb") as writer, ): writer.write(reader.read()) winreg.SetValueEx( FONTS_KEY, font_name + " (TrueType)" * name.endswith(".ttf"), 0, winreg.REG_SZ, name, ) It works, but it has a big problem, the fonts aren't registered as installed until the computer is restarted. I am downloading and installing on the fly, and this process isn't ideal. So how can I force the font installation update without rebooting? This is just an example, download Noto Sans, extract the archive, and try to use my code to install the fonts. After installation, refreshing on C:\Windows\Fonts doesn't make the fonts show up, only after rebooting the fonts show up there. Continue reading...