河北建设厅注册中心网站首页,石景山网站建设公司哪个好,网站维护一般做什么,商标设计网上接单 平台一、背景 
如果应用程序有操作本地文件的功能#xff08;如#xff1a;读、写、复制、移动、删除等等#xff09;#xff0c;那么在测试或调试该应用程序时#xff0c;肯定需要测试文件被其他应用程序锁定时#xff0c;你的应用程序是如何处理的。 那么如何在本地模拟文件…一、背景 
如果应用程序有操作本地文件的功能如读、写、复制、移动、删除等等那么在测试或调试该应用程序时肯定需要测试文件被其他应用程序锁定时你的应用程序是如何处理的。 那么如何在本地模拟文件被锁定的场景以便测试你的应用程序呢 这篇文章将总结几种方法来模拟文件被锁定的场景。 
二、方案 
1. 使用notepad应用程序 
在批处理脚本或者cmd命令行窗口使用如下命令 
notepad  filetolock通过该方式锁定的文件 可读、可复制等不可移动/删除/重命名/执行等操作 (可执行文件将不可执行如 .bat)关闭notepad窗口即可释放锁 2. 使用pause、ping、timeout等命令 
可以使用延时命令来定时锁定文件使用方式如下 1pause命令 
( 2 pause )  filetolock命令行窗口会显示请按任意键继续. . .当按任意键后即可释放锁定的文件 2ping命令 
( 2 ping -n 10 127.0.0.1 )  filetolockping命令执行完自动释放锁定的文件 3timeout命令 
( 2 timeout /T 10 /nobreak )  filetolocktimeout命令执行完自动释放锁定的文件 上述方式锁定的文件可读、可复制不可写、不可执行、不可移动或删除2是将命令输出重定向到handle 2即标准错误控制台仍显示命令输出。如果去掉2则命令输出会追加到 filetolock其他有延时效果的命令也可实现锁定文件如set /p、choice、sleep(需要安装)等读者自行尝试 3. 使用more命令 
在dos窗口使用more命令也可实现对文件的锁定 
more filetolock需要注意的是待锁定的文件如果内容较少不满足分屏显示的条件时该方法无效可以通过增加文件内容或者调整dos窗口的大小来改变每屏显示内容大小该方式锁定的文件可读、可复制不可写、不可执行、不可移动或删除 4. 使用word、excel应用程序 
使用操作系统自带的办公软件word、excel打开待锁定文件即可将文件锁定 仅支持文本文件该方式锁定的文件可读、可复制不可写、不可执行、不可移动或删除 5. 使用icacls命令 
icacls命令可通过访问控制列表ACL对指定的文件或目录进行权限控制详细介绍请参考icacls /?示例 
icacls filename /deny username:(W,R,D)
icacls filename /remove:d usernamefilename是要控制的文件名username是针对哪个用户进行访问控制(W,R,D)是权限掩码分别是写入W“读取R”“删除D”/deny 表示显式拒绝指定的用户访问权限/remove:d 将删除拒绝该SID的所有权限 6. 使用file.open方法 
在Windows PowerShell中使用file.open方法实现锁定文件 格式Open(String, FileMode, FileAccess, FileShare) 示例 
[System.io.File]::Open(F:\test\testfile.log, Open, Write, None)打开指定文件FlieModeOpen打开现有文件FileAccessWrite对文件进行写访问FileShareNone谢绝共享当前文件详情参考File.Open 方法  该方式锁定的文件不可读/写/执行/移动/删除示例中的FileAccessWrite无论设置为Write、Read还是ReadWrite对于其它要访问锁定文件的程序而言都是不可读/写/执行/移动/删除的关闭PowerShell窗口即可释放文件锁 7. 使用LockFileEx方法 
使用Windows API中的LockFileEx方法以下是用Python语言调用第三方库win32file实现 
import win32con
import win32file
import pywintypesp  yourfile.txt
f  file(p, w)
hfile  win32file._get_osfhandle(f.fileno())
flags  win32con.LOCKFILE_EXCLUSIVE_LOCK | win32con.LOCKFILE_FAIL_IMMEDIATELYwin32file.LockFileEx(hfile, flags, 0, 0xffff0000, pywintypes.OVERLAPPED())关于LockFileEx方法可参考lockFileEx 函数 
8. 使用第三方工具如 filelocker 
有一些第三方文件锁定工具可以在Windows上阻止其他程序删除或读写文件如filelocker 下载 FileLocker.zip 包解压后使用FileLocker.exe来锁定文件你可以将其放到path环境变量下的某个路径下以便全局使用 
使用方法 FileLocker [/T LockTime] [/I] [/K] [/Q] file [file...] 
参数说明/T LockTime按指定时间锁定文件单位毫秒/I无限锁定直到进程被终止(默认)/K锁定文件直到按下键/Q静默模式无输出信息CtrlC退出或关闭dos窗口 
注意需要管理员权限来执行 filelocker 命令否则会报错【Errorcode 5: 拒绝访问】 该方式锁定的文件不可读/写/执行/移动/删除 总结 
以上方法各有优缺点自行体会方法还有很多欢迎评论区补充以上方法在Win10测试可行其他版本系统未测试自行测试如果你需要手动释放未知程序锁定的文件你可以 a. 打开任务管理器性能资源监视器CPU关联的句柄 b. 在关联的句柄搜索句柄搜索被锁定的文件在搜索结果进程右键选择终止进程即可释放锁定的文件。 参考资料 
How to purposefully exclusively lock a file? How can I simulate a “locked” file (one which has a write lock) How-to: Redirection File.Open 方法 FileLocker - a small tool to lock files