https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/fsutil-fileAfter some testing, I worked out a procedure to manually zero out the free space on a drive using the Windows internal command
fsutil file. You should be comfortable with windows command line usage before attempting this. I used the traditional Command Prompt to do this. Powershell should work, but I don't have experience with it and have not tested it.
First, make a new directory and change to that directory to have a safe place to work. Then do a
DIR.
D:\D_workingDIR\fsutilTESTINGdir>dir
Volume in drive D is D_DRIVE
Volume Serial Number is FFFF-FFFF
Directory of D:\D_workingDIR\fsutilTESTINGdir
04/13/2020 10:23 PM <DIR> .
04/13/2020 10:23 PM <DIR> ..
0 File(s) 0 bytes
2 Dir(s) 1,234,567,168 bytes free
Copy the number of bytes free into the Windows Calculator. This is good place to store it and the commas will be removed when you copy out of Calculator and paste it back.
D:\D_workingDIR\fsutilTESTINGdir>fsutil file createNew foobarFREESPACE.raw 1234567168
File D:\D_workingDIR\fsutilTESTINGdir\foobarFREESPACE.raw is created
This creates a file that uses up all of the free disk space. On a FAT or FAT32 drive, this will take a long time as the entire file needs to be written. If so, the task is complete and you can delete the file. I haven't tested on a FAT or FAT32 drive myself. On NTFS, sparse file support means that there are additional steps.
The next command has to be run in an Administrator Command Prompt:
D:\D_workingDIR\fsutilTESTINGdir>fsutil file setValidData foobarFREESPACE.raw 1234567168
Valid data length is changed
The next command can be run as a regular user:
D:\D_workingDIR\fsutilTESTINGdir>fsutil file setZeroData offset=0 length=1234567168 foobarFREESPACE.raw
Zero data is changed
setZeroData will take a long time as it will write zeros to the file. Once it is done, you can delete the file and your free space should be zeroed.
The commands are relatively safe to execute. The main risk is if you use the tab key for file name autocomplete, you might pick up the wrong filename and permanently delete one of your files.
createNew is safe as it can only create a new file.
setValidData can corrupt the file by changing the file length.
setZeroData will irrevocably erase the data in a file.
If
createNew fails because of lack of free space, try reducing the file size by a couple kilobytes. Windows may be using some space for housekeeping, preventing you from allocating all the space. I've only tried this on a data only drive as I suspect Windows will complain if you use up all the space on the system drive.
You might have to wait for the disk activity to stop before deleting the file as write caching may return you to the command prompt before
setZeroData is finished.
On NTFS, there still may be some unerased personal information in the free space after this procedure. On very short files, NTFS stores the file data in the MFT record itself and this procedure will not affect the free space in the MFT record.