我正在开发一个小工具,我需要再次测试系统级锁定文件。我正在寻找一些小应用程序(或者一些我疲惫的大脑想不出的简单方法),让我可以随意锁定和解锁文件。类似于 Unlocker 的东西,但它也允许我锁定。
系统是 Windows。我期望在 XP 下运行的任何程序都能在该系列的其他操作系统上运行。但无论如何,最终目标是 Windows 7。
答案1
更适合 StackOverflow,但我不敢相信这么简单的东西居然不存在。以下是 C# 代码(请随意修改,快速拼凑):
using System;
using System.IO;
using System.Text;
using System.Threading;
class LockFile
{
public static void Main(String[] args)
{
if (args.Length > 2)
{
Console.WriteLine("Usage: lockfile <file> <wait_in_ms>");
Environment.Exit(0);
}
string path = args[0];
try
{
File.Open(path, FileMode.Open, FileAccess.Write, FileShare.None);
Thread.Sleep(int.Parse(args[1]));
}
catch (FileNotFoundException e)
{
Console.WriteLine("File not found, exiting.");
Environment.Exit(0);
}
}
}
用法:
lockfile c:\somefile.txt 30000
锁定指定文件 30 秒。尝试访问时,您将看到如下消息:
以下是需要编译的二进制文件,.NET 框架。如果您需要本机二进制文件,我会用另一种语言重新编码,只需在评论中询问即可 :)
答案2
以下是 PowerShell 中的相同代码(在 PS v4、.NET 4.6、Win 8.1 中测试):
$file = New-Object system.io.fileinfo("C:\Temp\tmp2F7F.tmp")
$stream = $f.Open([system.io.filemode]::Open, [system.io.fileaccess]::Read, [System.IO.FileShare]::None)
并且,作为一行代码:
(New-Object system.io.fileinfo("C:\Temp\tmp2F7F.tmp")).Open(3, 1, 0)