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...
|Integrated in Windows Shell (right-mouse menu on DLL, OCX, or EXE files).
||Automatic installation/registration when launched first time.
||1 parameter: name of executable module to search (DLL, OCX)
||Display list of processes who are locking a DLL (if DLL is loaded by multiples processes)
||Displays 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.
|Double-click on the program WhoSLocking.exe
||Click on the OK button to exit.
To use this program:
|In Windows Explorer, select on a locked module file.
||Click on right-mouse button
||In the menu, select option "Who's Locking?"
||A dialog box pops-up, showing the list of processes who are locking the module file (if any).
||Double-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).
||Click 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:
|CSimpleProcessAPI: 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.
|CServiceManager: 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.
|CWindowsRegistry: 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).