Had this asked of me recently,
A database administrator couldn’t remount an oracle database as the file was in use, resulting in my HR department feeling all cold and lonely outside of their application! There was no reference of the file in use in task manager and no implication as to what file was using it.
To find out what had the file open i used an application from Sysinternals called process explorer. You can use procexp.exe to find open files. Launch Procexp.exe and click find > Find Handle or DLL.
Enter the filename in the search box and wait for it to show you what has the file open! then simply kill the process using it. If its a system process, you can expect an error or a lovely blue screen for your hassle, But on the reboot you should be grand