如何有目的地独占锁定文件?

Joh*_*n K 110 windows-7 windows-server-2008

我想对文件持有独占锁,以便其他任何东西都无法读取或写入它。是否有简单的 Windows 工具或命令来执行此操作?

我想该工具或实用程序将实现LockFileEx Windows 功能。

注意:我已经在文本文件上尝试过像 Notepad 和 Notepad++ 这样的文本编辑器,但它们没有对其持有排他锁。

小智 167

更简单的解决方案:在感兴趣的目录中从 cmd 行运行:

notepad >filetolock
Run Code Online (Sandbox Code Playgroud)

作为重定向的标准输出,它将保持锁定状态,直到应用程序(记事本)终止。

请注意,“filetolock”将被重定向覆盖,因此您可能不想使用任何重要的现有文件。空的“filetolock”对您要测试的应用程序没有影响,因为该应用程序无论如何都无法打开它。

  • 使用附加重定向来覆盖 filetolock:`notepad >>filetolock` (47认同)
  • 仍然适用于 Windows 10。应该是公认的答案 (11认同)
  • 出于某种原因,这必须在 cmd.exe 中执行。它在 PowerShell 中不起作用。文件已创建并已打开记事本,但尽管记事本已打开,但您仍然可以删除文件。我在 Windows Server 2012 和 Windows 10 上对此进行了测试。 (9认同)
  • 这是比下载更多免费软件更好的解决方案。 (6认同)
  • 非常有用的解决方案,无需安装任何东西 (5认同)
  • 很好的解决方案。锁定的文件无法删除,**但可以复制。** (2认同)
  • 此方法只放置写锁,不放置读锁 (2认同)

mar*_*gle 44

锁定文件没有第三方工具对文件的变更被锁定,文件甚至不能被复制

此 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()
Run Code Online (Sandbox Code Playgroud)

  • 在测试时,我发现您也可以使用 `[System.io.File]::Open('c:\myfile.txt', 'Open', 'Read', 'None')` 来保留文件打开直到关闭 PowerShell (4认同)
  • 我发现这是唯一可行的解​​决方案。notepad 和 EasyFileLocker 方法都不会完全锁定文件,仍然可以复制(在 Windows 10 上测试) (2认同)

Ice*_*Ice 30

用 MS-Excel 打开它...这个应用程序在打开时锁定文件。

  • 我以前认为Excel很有用! (12认同)

小智 22

试试Easy File Locker(免费软件)。

在此处输入图片说明

  • 此应用程序似乎不会“锁定”文件,而是更改文件的权限。如果您试图测试您的应用程序如何处理被另一个应用程序主动打开/锁定的文件,这是一个重要的区别。就我而言,此应用程序不起作用。“记事本>文件”解决方案应该是这里的答案。 (19认同)
  • 不适用于 Windows 10。并且可以卸载。谨防!! (2认同)

小智 16

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.
Run Code Online (Sandbox Code Playgroud)

  • 请注意,在 Windows 10 上,它必须以管理员身份运行。 (3认同)

小智 6

我不能写评论,所以我这样添加我的信息:

/sf/ask/410237971/

编辑:其他问题的摘要:

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

  • MS 程序(例如 Word 或 Excel)也可以锁定(适用于文本文件)

  • 以编程方式使用LockFileEx(Windows API)与LOCKFILE_EXCLUSIVE_LOCKandLOCKFILE_FAIL_IMMEDIATELY