Can't remove certain fonts in Windows 7

We have an x64 Windows 7 professional machine on which some but not all fonts can not be removed. The problematic fonts in question are not system fonts or Microsoft Office fonts (I think, they haven't updated the list for Office2010). One example: StoneSansOSITC TT (filename IT243__.ttf). Curiously other fonts in the same family could be deleted, about half a dozen.

The error message is something like "this file is in use and can't be deleted [try again] [skip]".

We've tried removing the fonts under a domain account which is member of the local Administrators group as well as the Local Administrator account. We've tried removing from Safe Mode and various combinations of logging off and rebooting.

I used Process Explorer to search for the open file handle, and it identifies csrss.exe as having that file open, as well as a number of other fonts. I've proved, as the wikipedia article on csrss says, that terminating the process results in a blue screen of death.

How do I track down which application/service/process is causing these files to be in use all the time and shut them down?

update:

This person's similar report indicates there may be a problem with Windows 7 getting confused over how many typefaces are represented in a font family (thinks there are 4 when actually are 6).

This thread has a pic of the error message we see: font cannot be deleted because it is in use error dialog

We tried the Unlocker program mentioned here, and while it identified locked files in the fonts directory they didn't match the ones we were attempting to delete.


I've just managed to solve this. I uninstalled the problem font via a font management program called NexusFont but I think it will probably work with other programs with a similar functionality.


Found a back door which works, mostly, but there are still some unexplained oddities like Windows thinks the fonts are still installed until a logoff/on cycle is completed, and that if the removed font is later re-installed Windows says the font is already installed, even though it is not displayed in the list. Thankfully applications like Adobe Illustrator see the truth in either case, which is the desired result in any case.

The kludge:

Open two Windows Explorer windows,(for convenience snap them right and left with winkey-left, winkey-right.) On one side access the font folder directly, bypassing the confused Control Panel font manager, with \\machine-name\c$\Windows\Fonts. On the other navigate to C:\Windows\Fonts, which will switch to Font Manager view.

On the FM side, locate each font to be removed, select > properties to get the actual filename, and then delete that file from the other explorer window.

remove problem fonts via UNC path

Update: For the C:\Windows\Fonts window, right-click on column heading and you can show the file name (and then click on heading to sort by path!).

details view columns context menu


matt wilkie's solution works. There's an even easier way in Windows 8, though. Simply open an elevated command prompt as administrator and enter the following command:

del /f /s /q /a "C:\Windows\fonts\my-font.ttf"

That will force delete the file and that's it. Please also note, that a restart might be required after editing it if the font doesn't work (mostly due to the confusion with font families if you have multiple types of the same font)


Actually, if you still can't delete fonts because windows says they are in use, then boot to safe mode with only the command window. cd to c:\Windows\Fonts and delete the fonts directly from here. This worked like a champ. Note that you will need to note the file names of the fonts you want to delete before you reboot to safe mode.