Windows – How to Lock a File Without Changing It or Using Third-Party Tools

filesystemslockwindows 7

Is there a way to lock a file with on-board tools so it can't be deleted or overwritten?

For testing of copy scripts I need to lock files temporarily to check the error handling in the scripts. Till XP I used loading a file in debug.exe to lock it.

Is there a way in Windows 7 (and later)?

Edit
I know that there are programs doing this. My question is if there is a built in mechanism in windows. Sometimes I have to check a script on a PC and don't want to install new programs for that.

Edit2
Here are also good suggestions: How to purposefully exclusively lock a file?, which, however, need 3rd party tools or change the file to be locked.

Best Answer

I think PowerShell is probably the neatest way to accomplish this. Something like the following:

#Specify the file name
$fileName = "C:\myfile.txt"

#Open the file in read only mode, without sharing (I.e., locked as requested)
$file = [System.io.File]::Open($fileName, 'Open', 'Read', 'None')

#Wait in the above (file locked) state until the user presses a key
Write-Host "Press any key to continue ..."
$null = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

#Close the file (This releases the current handle and unlocks the file)
$file.Close()

While paused, the above script causes the following prompt when attempting to open up "myfile.txt":

enter image description here

Related Question