作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在delphi上我发现我可以像这样锁定文件:
aHandle := CreateFile(PChar(aFileName),GENERIC_READ, 0, nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); // get the handle of the file
aFileSize := GetFileSize(aHandle,nil); //get the file size for use in the lockfile function
Win32Check(LockFile(aHandle,0,0,aFileSize,0)); //lock the file
但是有没有办法让文件保持锁定状态直到下次重新启动而无需让应用程序运行到那时?
最佳答案
哇,我对此的用例很感兴趣!
如果您确实想保持文件锁定,您可能只需要保持应用程序运行即可。
但是,最好还是退一步讨论您要解决的实际问题,而不是提出解决方案。假设解决方案的人必须采取行动特定形式通常会因为不考虑所有选项而对自己不利。
如果您的目的是阻止人们修改文件,那么最好使用权限来执行此操作,因为无论程序是否在任何给定时间锁定文件,这都会起作用。
但是,如果您必须这样做,并且希望防止人们杀死您的应用程序来解锁文件,则可以使用 RobinHood/FriarTuck method使其更加“安全”。
让一个程序 (Robin) 锁定文件并启动第二个程序 (Tuck)。如果 Tuck 在任何时候退出,请让 Robin 立即重新启动它。
同样,Tuck 也会跟踪 Robin 的状态,一旦退出就会立即重新启动。
这绝不是完全安全,但它严重减少了可以修改文件的窗口,因为 Robin 和 Tuck 会互相保护。
它也是邪恶的,因此您可能需要在使用此功能之前确定您需要它。
关于delphi - 如何锁定文件直到下次重新启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15103372/
我是一名优秀的程序员,十分优秀!