如何在Windows中锁定文件而不更改文件或使用第三方工具?


24

有没有一种方法可以使用机载工具锁定文件,以使其无法删除或覆盖?

为了测试复制脚本,我需要lock files temporarily检查脚本中的错误处理。直到XP,我一直使用在debug.exe中加载文件来锁定它。

Windows 7(及更高版本)中是否有办法?

编辑
我知道有一些程序正在执行此操作。我的问题是Windows是否有内置机制。有时我必须在PC上检查脚本,而又不想为此安装新程序。

Edit2
这里也有很好的建议:如何有目的地独占锁定文件?,但是需要第三方工具或更改要锁定的文件。


是否记事本技巧为你的工作?
nixda 2014年

1
@nixda否。它将覆盖文件。我需要锁定当前文件而不更改它。
marsh-wiggle 2014年

我懂了。我撤回我的密切投票
nixda 2014年

Answers:


45

我认为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 (This releases the current handle and unlocks the file)
$file.Close()

暂停时,以上脚本在尝试打开“ myfile.txt”时引起以下提示:

在此处输入图片说明


2
大!谢谢!令我感到羞耻的是,我必须承认我是在powershell中进行开发的,没有考虑为此使用.net类。[我希望不会再走了:-)]
marsh-wiggle 2014年

1
好答案。对于好奇,这里的MSDN链接File::Open方法详细介绍了呼叫(即,上次参数的参数'None'拒绝分享文件与任何其他线程/进程-同样地,规定存在锁定为只读/写文件,或其组合)。
2014年

1
@moab文件已关闭,句柄最后释放。
2014年

2
请注意,$host.UI.RawUI.ReadKey(...)由于未为ISE实现ReadKey,因此在PowerShell ISE中将失败。解决方法是[void](Read-Host 'Press Enter to continue')。与用户必须按Enter键而不是任何键完全不同。但是,对于大多数目的来说已经足够了。解决方法来自此博客文章:jeffwouters.nl/index.php/2016/06/…–
SimonTewsi

4

由于我不喜欢安装实际上不会使用的软件,因此发现了VBScript的这个精髓:

Const ForAppending = 8
Set oFSO = CreateObject("Scripting.FileSystemObject")

Set f = oFSO.OpenTextFile("C:\Tst\My2.txt", ForAppending, True)

MsgBox "Press OK to unlock the file(s)"

所有功劳归Torgeir Bakken所有,您可以在此处查看完整的帖子:http ://www.pcreview.co.uk/threads/how-to-lock-files.1518829/


对于那些不喜欢像上面的解决方案那样的powershell的人来说很好
marsh-wiggle

0

您不能将其标记为只读吗?通过不允许更改或删除文件,可以有效地“锁定”文件。

attrib.exe命令在命令行上可用,它将允许您将文件或目录设置为只读。可以在这里找到有关该命令的更多信息

相反,您可以通过GUI右键单击要标记为只读的文件或目录,选择属性,然后选中“只读”框,以执行相同的操作。单击“应用/确定”,然后将新设置应用于文件或目录。


3
只读属性仅防止修改,而不能删除。
ComFreek 2014年

0

右键单击并转到“文件或文件夹的属性”时,是否无法通过“安全性”选项卡限制文件的可访问性?

如果用户具有对PC的管理员访问权限,那么这是否将不允许他删除其他所有对文件/文件夹执行任何操作的能力?

我必须在输入时承认我的工作PC仍在WinXP Pro上,因此我上面所说的可能不再可用-我仍然对在家中的新Win 8.1 Pro盒子不满意。 Win XP工作多年


任何可用的NTFS权限都不会模仿锁定文件的行为。最接近的是将文件设为只读,但是我们可以确定OP知道该选项,并出于充分的理由询问是否锁定文件。
我说恢复莫妮卡

-2

在某些情况下,使用文件名创建新文件夹可以完成此任务。(即尝试打开文件时出现错误)。


这实际上是评论,而不是原始问题的答案。
DavidPostill

对我来说,正是任务的答案将我引向了此页面。由于像您这样的人,因此在类似的任务中找不到人。
noonex

3
OP正在询问如何锁定现有文件。无法创建具有相同名称的文件夹。“子目录或文件xxx已经存在”,因此您的答案不适用于该问题中的问题。
DavidPostill

在很多情况下,需要使用“锁定现有文件”来确保应用程序在尝试修改或打开文件时会出错。我现在真的不再解释明显的事情了-先生,祝你有美好的一天。
noonex
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.