Just to add to that, actually removing any particular hook ("handle") may be dangerous from a data integrity point of view - the file(s) which you're hoping to unlock may potentially be corrupted. An app opens handles to a file because it intends to read or write to the file. If the file has not been "closed" yet in some sense that the app thinks is appropriate, and yet the handle is removed through another mechanism (ProcExp, "Unlocker"... whatever), the app may no longer be able to properly finish what it was doing and the file may remain in an inconsistent state.
It's safer to merely close the app which has open handles to the file. That way, it will presumably finish everything it was doing with the file and leave it in a completed, consistent state.