Who's Locking? v1.3

This article was contributed by Emmanuel KARTMANN.

Environment: VC6 SP3, NT4 SP5 or VC6 SP3, Windows98 SE

Have you ever tried to copy a DLL and had an "Access Denied" or "Shared Violation" error? Did you have to reboot everytime you needed to upgrade a DLL?

If yes, this program is for you!

Who'sLocking? is a a devpt/system management tool to find which process is locking a DLL.

Whenever a process loads a module (DLL), it locks the DLL and no other process can delete and/or write in it: you get "Sharing Violation" errors (or "Access Denied").

Once you know the name of the process who's locking your DLL, you can stop this process and have full access to the DLL module. There's no need to reboot your system anymore...


bulletIntegrated in Windows Shell (right-mouse menu on DLL, OCX, or EXE files).
bulletAutomatic installation/registration when launched first time.
bullet1 parameter: name of executable module to search (DLL, OCX)
bulletDisplay list of processes who are locking a DLL (if DLL is loaded by multiples processes)
bulletDisplays process name, PID, executable pathname (if applicable), and service name (if applicable)


The program registers itself in the Windows Shell when you start it the first time.
bulletDouble-click on the program WhoSLocking.exe
bulletClick on the OK button to exit.


To use this program:
bulletIn Windows Explorer, select on a locked module file.
bulletClick on right-mouse button
bulletIn the menu, select option "Who's Locking?"

bulletA dialog box pops-up, showing the list of processes who are locking the module file (if any).

bulletDouble-click on a process and a dialog box pops-up to enable you to stop the process locking the DLL (gently if it is a Windows NT Service, or forcefully if it's not: it will terminate the process).

bulletClick on the OK button and a dialog box pops-up to tell you if the process has been stopped:


The WhoSLocking program uses a several C++ class from my Simple Library:
bulletCSimpleProcessAPI: builds process/module list, finds the process who's locking a module and terminates the process.
This class is reusable (no GUI stuff in it) and runs on both Windows NT and Windows 98. Please refer to the CSimpleProcessAPI.html file for more details.
bulletCServiceManager: stops the Windows NT Service.
This class is reusable but runs only on Windows NT. Please refer to the CServiceManager.html file for more details.
bulletCWindowsRegistry: Easier access to the Windows Registry.
Please refer to the CWindowsRegistry.html file for more details.


Download Article and Source Code (105 KB).

Download self-extracting kit (694 KB).