For most here, I don't think this article contains new information.
The actual interesting discussion, to me, is why Microsoft won't show WHO is dangling the handle open when the user tries to interact with a file via Windows' UI. To understand that, we have to look at a BSOD change Microsoft made in Windows 8:
In Windows 2K, XP, Vista, and 7 the BSOD would tell you exactly WHO was causing your BSOD (i.e. which module). Which was incredibly helpful, when you could see it was a e.g. Creative sound driver, or Nvidia graphics driver. Then in Windows 8/8.1 they went to the "sad face" simplified BSOD screen. From then on in order to see which module it originated in, you had to load the mini-dump into WinDbg (which almost no users would/could do).
What I am saying is: Microsoft went out of their way to shield their partners (OEMs/hardware vendors) from criticism with that BSOD UI change. So it seems unlikely they'd make a change to the "File Locked" UI that would essentially do the same thing: Open up their partners to criticism for their [bad] software (e.g. anti-virus/anti-malware/corporate compliance/etc).
Then tack on that Microsoft's own software may be some misbehaving software; and they'd essentially be telling on themselves. OneDrive in particular, I've seen in that list a lot (but I could write paragraphs on what a turd/abandonware OneDrive is).
But the offending module is not necessarily the module listed in the BSOD. It could be a victim too, one that got its memory corrupted by someone else.
That's one reason why they removed it, because it was causing end users to blame vendors/MS when they often had nothing to do with whatever the problem was.
That’s a reasonable explanation. It would be so easy for them to show the offending application rather than the user closing all applications and it’s still locked and then having to restart Windows.
But they can't be bothered to tell which process is holding it, not even a damn PID. C'mon guys, bare minimum here, and this issue has been there for decades.
It's great you added file locksmith to powertoys but that should be a built in OS feature for many, many years now.
On Linux if a file can't be edited because some process is holding it open you can just mv the file to /tmp and create a new file in its place. The process that has it open is unaffected because the handle is independent of the path.
On Windows a file that is open in an application cannot be moved, plus it won't tell you which process has it open. Yes you can use some sysinternals tool but this is basic info that should be immediately available without installing some additional tools.
This makes me wonder, what happens when a program uses a file, which more than a single hardlink points to, and you want to remove one of them. Does it matter, through which hardlink the file gets opened or are all the hardlinks prevented from being unlinked?
Hard links are just pointers to the file. You can remove any or all of them independently of each other and the running program. In fact, IIRC there's a semi-common pattern where a program will deliberately create a file, open it, and then unlink it, which leaves it usable but anonymous and in a state that will always be garbage-collected when the program exits.
It feels like the article is repeating information from some other source, but I don’t see such a source linked? (also note that this site is not associated with Microsoft.)
This issue was what had me give up on windows forever and its been around since forever. There are many situations when there is just no way to release files except restart. When the basics don't work nothing else even matters.
For most here, I don't think this article contains new information.
The actual interesting discussion, to me, is why Microsoft won't show WHO is dangling the handle open when the user tries to interact with a file via Windows' UI. To understand that, we have to look at a BSOD change Microsoft made in Windows 8:
In Windows 2K, XP, Vista, and 7 the BSOD would tell you exactly WHO was causing your BSOD (i.e. which module). Which was incredibly helpful, when you could see it was a e.g. Creative sound driver, or Nvidia graphics driver. Then in Windows 8/8.1 they went to the "sad face" simplified BSOD screen. From then on in order to see which module it originated in, you had to load the mini-dump into WinDbg (which almost no users would/could do).
What I am saying is: Microsoft went out of their way to shield their partners (OEMs/hardware vendors) from criticism with that BSOD UI change. So it seems unlikely they'd make a change to the "File Locked" UI that would essentially do the same thing: Open up their partners to criticism for their [bad] software (e.g. anti-virus/anti-malware/corporate compliance/etc).
Then tack on that Microsoft's own software may be some misbehaving software; and they'd essentially be telling on themselves. OneDrive in particular, I've seen in that list a lot (but I could write paragraphs on what a turd/abandonware OneDrive is).
But the offending module is not necessarily the module listed in the BSOD. It could be a victim too, one that got its memory corrupted by someone else.
That's one reason why they removed it, because it was causing end users to blame vendors/MS when they often had nothing to do with whatever the problem was.
I believe it was removed actually because it's not a strong indicator of the real fault, there was an old article on this but could only find this more recent summary https://devblogs.microsoft.com/oldnewthing/20250121-00/?p=11...
That’s a reasonable explanation. It would be so easy for them to show the offending application rather than the user closing all applications and it’s still locked and then having to restart Windows.
But they can't be bothered to tell which process is holding it, not even a damn PID. C'mon guys, bare minimum here, and this issue has been there for decades.
It's great you added file locksmith to powertoys but that should be a built in OS feature for many, many years now.
On Linux if a file can't be edited because some process is holding it open you can just mv the file to /tmp and create a new file in its place. The process that has it open is unaffected because the handle is independent of the path.
On Windows a file that is open in an application cannot be moved, plus it won't tell you which process has it open. Yes you can use some sysinternals tool but this is basic info that should be immediately available without installing some additional tools.
> because the handle is independent of the path.
This makes me wonder, what happens when a program uses a file, which more than a single hardlink points to, and you want to remove one of them. Does it matter, through which hardlink the file gets opened or are all the hardlinks prevented from being unlinked?
Hard links are just pointers to the file. You can remove any or all of them independently of each other and the running program. In fact, IIRC there's a semi-common pattern where a program will deliberately create a file, open it, and then unlink it, which leaves it usable but anonymous and in a state that will always be garbage-collected when the program exits.
On Linux you can delete all hardlinks to open files.
What you can't do is modify a file that's executing (program or library), then you get ETXTBSY.
I seem to remember that you could, however, rename the file for a similar effect on Windows.
No, you can't rename a file in use, unless it is explicitly opened with a sharing flag (which most applications don't).
You can also just unlink it.
It feels like the article is repeating information from some other source, but I don’t see such a source linked? (also note that this site is not associated with Microsoft.)
This issue was what had me give up on windows forever and its been around since forever. There are many situations when there is just no way to release files except restart. When the basics don't work nothing else even matters.