Name | Modified | Size | Downloads / Week |
---|---|---|---|
README | 2016-07-12 | 3.0 kB | |
fuser.exe | 2016-07-12 | 399.9 kB | |
Totals: 2 Items | 402.9 kB | 1 |
Very simple fuser command. LICENSE: free - enjoy! Modification history: 0.1 11/10/2012: - Created. 0.2 11/12/2012: - Changed to use NtQueryObject instead of NtQueryInformationFile, because it was causing programs to crash. It must have been fiddling a bit with the files it was checking on. - The exact file matching wasn't working right. Fixed. 0.3 11/14/2012: - The program had troubles under Windows 2008 R2 - it could not create as many threads as I wanted to launch. So I changed the code to try to minimize the number of threads at any one time. 0.4 12/27/2012: - Fixed bug where NtQueryObject locked up so tight under XP on named pipes that the fuser.exe process could not even exit. You couldn't even kill the process under Task Manager. Anyway, I utilized PeekNamedPipe() to detect whether or not it is a named pipe, and therefore ignore it. 0.5 12/29/2012: - Changed to convert the \Device\HarddiskVolume* stuff into real drive letters. It even handles network drives, which was a little bit of a trick. Therefore, the file matching algorithm now takes the drive into account. 0.6 07/07/2015: - Fixed so that it will compile with a modern Microsoft Compiler. - Had to fix some things in local.h since a structure I had defined is already in the Microsoft headers. - Had to rename an enumerator that conflicted with one that's already defined elsewhere in the Microsoft headers. - Fixed an uninitialized variable problem. - Fixed handle leak when getting the filename. - Rewrote makefile. 0.7 11/07/2015: - Changed so that *any* object type is analyzed. - Changed so that if a filename is given, if it starts with "\Device" we won't treat it as a file (won't check to see if it exists). 0.8 11/07/2015: - Changed access() and memcmp() calls to the POSIX-compliant versions. - When searching for a file/device, print out what was being searched for at the very top. 0.9 07/09/2016: - Each thread will now pump out its own output, rather than having the main thread do them all. - The output has been changed to be less verbose. We will show the PID in decimal, the short program name, and the filename. - Changed so that only certain object types are analyzed. This has greatly sped up the program, since 90% of what it was looking at was essentially meaningless. - Changed thread timeout from 200ms to a full second. I found that I was declaring threads locked up that really weren't. - Changed the thread cleanup logic that occurs while threads are being launched. During this phase, we'll do a quick check to see if any threads need cleaned up (as opposed to waiting forever). Of course, at the very end we'll wait forever. - The executable is now statically linked.