【问题标题】:How to lock a file until next reboot?如何锁定文件直到下次重新启动?
【发布时间】:2013-02-27 02:55:06
【问题描述】:

在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

但是有没有办法让文件保持锁定直到下次重新启动直到那时应用程序才运行

【问题讨论】:

  • 我认为你想要完成的一些背景可能会有所帮助。人们经常问如何做某事,而实际上他们应该寻找更高层次的方法。

标签: delphi file file-io restart


【解决方案1】:

哇,我会对这个用例感兴趣!

如果您真的想保持文件锁定,您可能只需要保持应用程序运行。

但是,最好还是回到您正在尝试解决的实际问题,而不是提出一个解决方案。假设解决方案的人必须采取由于不考虑所有选项,特定形式通常对自己不利。

如果您的目的是阻止人们修改文件,最好使用权限来执行此操作,因为无论程序是否在任何给定时间锁定文件,这都会起作用。

但是,如果您必须这样做,并且想要防止人们杀死您的应用程序来解锁文件,您可以使用RobinHood/FriarTuck method 使其更“安全”。 p>

让一个程序 (Robin) 锁定文件并启动第二个程序 (Tuck)。如果在任何时候 Tuck 退出,让 Robin 立即重新启动它。

同样,Tuck 会跟踪 Robin 的状态,并在它退出时立即重新启动它。

这绝不是完全安全的,但它严重减少了可以修改文件的窗口,因为 Robin 和 Tuck 相互保护。

它也是邪恶的,所以你可能想在释放它之前确定你想要这个功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多