題 如何有目的地獨家鎖定文件?


我想對文件進行獨占鎖定,因此無法通過其他任何方式讀取或寫入。是否有一個簡單的Windows工具或命令來執行此操作?

我想工具或實用程序會實現 LockFileEx Windows功能。

注意:我在文本文件上嘗試過像Notepad和Notepad ++這樣的文本編輯器,但是它們沒有對它進行獨占鎖定。


74
2018-06-09 02:24


起源


為什麼不做一個?還有,他們應該持多久鎖?他們應該等待一些事件嗎? - Mehrdad
我考慮過編程,但我認為可以使用快速工具,編輯器或命令。在超級用戶上並非所有用戶都是程序員。 bit.ly/lXT6ey我不想用這個問題去Stackoverflow路線。我正在測試應用程序無法訪問文件時的行為。 - John K
我或許可以為你製作一個 - 只要知道什麼時候應該釋放鎖。 - Mehrdad
另見我的類似問題 superuser.com/questions/519389/flock-command-for-windows - eadmaster
顯然,Notepad和Notepad ++等編輯器甚至不會非獨占地保持文件打開。 - John


答案:


嘗試 簡易文件櫃 (免費)。

enter image description here


20
2017-10-13 04:50



在Windows 2003上不起作用 - Eric Bonnot
此應用程序似乎不會“鎖定”文件,只需更改文件的權限。如果您嘗試測試應用程序如何處理由另一個應用程序主動打開/鎖定的文件,則這是一個重要的區別。在我的情況下,這個應用程序不起作用。 “記事本>文件”解決方案應該是這裡的答案。 - javajavajavajavajava
不適用於Windows 10.並且可以卸載。謹防!! - Shahar Prish


更簡單的解決方案:在感興趣的目錄中從cmd行運行:

notepad >filetolock

作為重定向stdout,它將保持鎖定狀態,直到應用程序(記事本)終止。

請注意,“filetolock”將被重定向覆蓋,因此您可能不希望使用任何重要的現有文件。空的“filetolock”對於您嘗試測試的應用程序無關緊要,因為應用程序無論如何都無法打開它。


113
2017-09-24 20:09



使用append redirect代替現在覆蓋filetolock: notepad >>filetolock - eadmaster
非常有用的解決方案,無需安裝任何東西 - Aprillion
這是一個比下載更多免費軟件更好的解決方案。 - BenCr
仍然適用於Windows 10.應該是接受的答案 - SoonDead
由於某種原因,這必須在cmd.exe中執行。它在PowerShell中不起作用。文件已創建並且記事本已打開但您仍然可以刪除文件,儘管記事本已打開。我在Windows Server 2012和Windows 10上都進行了測試。 - Ville Salonen


用MS-Excel打開它...這個應用程序在打開時鎖定文件。


25
2018-06-10 08:11



我認為Excel以前很有用! - Scott Stafford


鎖定文件 沒有第三方工具沒有對文件的更改 被鎖定了 文件甚至無法複製

此PowerShell腳本是對類似問題的答案的引用。

如果您覺得它有用,您可以投票 原來的答案 而不是這個帖子。

#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
$file.Close()

25
2017-12-28 20:17



我發現這是唯一可行的解​​決方案。記事本和EasyFileLocker方法都沒有完全鎖定文件,仍然可以復制(在Windows 10上測試) - HypeZ
對於Powershell ISE使用 [void](Read-Host 'Press Enter to continue') 代替 $host.UI.RawUI.ReadKey(...) 因為Powershell ISE中的偽控制台不支持ReadKey。 - SimonTewsi


FileLocker 是一個免費/開源命令行工具。

用法:

FileLocker [/T LockTime] [/I] [/K] [/Q] file [file...]

/T LockTime     Time in milliseconds to lock the file
/I              Infinite locking until process is killed (default)
/K              Lock file until key is pressed
/Q              Be quiet.

10
2017-08-13 15:59



這對我有用,其他解決方案沒有 - cowlinator
請注意,在Windows 10上,它必須以管理員身份運行。 - cowlinator


我不能寫評論,所以我這樣添加我的信息:

https://stackoverflow.com/questions/5860542/how-can-i-simulate-a-locked-file-one-which-has-a-write-lock

編輯:另一個問題的摘要:

  • 暫停命令: ( >&2 pause ) >> file2lock.txt

  • 像word或excel這樣的MS程序也會鎖定(適用於文本文件)

  • 以編程方式使用 LockFileEx (windows API)用 LOCKFILE_EXCLUSIVE_LOCK 和 LOCKFILE_FAIL_IMMEDIATELY


3
2017-09-14 07:59





以下是我如何復制鎖定文件的用戶行為以進行錯誤測試。

Dim s As New StreamReader(“C:\ test \ sampleFile.txt”)

我將該行添加到我的單元測試中以鎖定文件,然後在調試模式下運行測試以在給定文件被鎖定時復制不良行為。

我仍然不知道我的業務用戶如何鎖定給定的文件。正如你所說,記事本無法完全鎖定它。

幸運的是,除非您另行指定,否則聲明streamreader將獨占鎖定文件。


1
2017-11-10 19:29





將“Your-Password-Here”替換為您的密碼,並將此腳本另存為Locker.bat

*cls
@ECHO OFF
title Folder Locker
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK
if NOT EXIST Locker goto MDLOCKER
:CONFIRM
echo Are you sure u want to Lock the folder(Y/N)
set/p "cho=>"
if %cho%==Y goto LOCK
if %cho%==y goto LOCK
if %cho%==n goto END
if %cho%==N goto END
echo Invalid choice.
goto CONFIRM
:LOCK
ren Locker "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
echo Folder locked
goto End
:UNLOCK
echo Enter password to Unlock folder
set/p "pass=>"
if NOT %pass%==Your-Password-Here goto FAIL
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Locker
echo Folder Unlocked successfully
goto End
:FAIL
echo Invalid password
goto end
:MDLOCKER
md Locker
echo Locker created successfully
goto End
:End*

當您運行批處理文件時,它將顯示“您確定要鎖定文件夾(Y / N)”提示;鍵入Y並按Enter鍵,文件夾將被鎖定。

再次運行批處理文件,然後輸入您的密碼和文件夾,您的所有文件將再次解鎖。


-1
2017-12-11 15:33



這只適用於文件夾,更糟糕的是它 重命名 文件夾。那根本不會做。 - Twisty Impersonator