请教如何保护释放的文件不被删除?
各位老师,我用AU3释放一个文件到PROGRAM FILES目录,用主界面的BUTTON来调用,但是释放之后,手工就能把它删除掉,这样太不牢靠了,怎么样保护在主程序运行期间它不被删除?
但是在主程序退出时,保护机制要关闭。谢谢。 $sFilePath = "YourFileName"
$hFile = DllCall("Kernel32.dll", "handle", "CreateFile", "str", $sFilePath, _
"dword", 0xC0000000, "dword", 3, "dword", 0, _
"dword", 3, "dword", 0, "handle", 0)
OnAutoItExitRegister("_CloseFile")
MsgBox(0, $hFile, "")
; Do something.
Func _CloseFile()
DllCall("Kernel32.dll", "bool", "CloseHandle", "handle", $hFile)
EndFunc ;==>_CloseFile 回复 2# pusofalse
麻烦 能解释下吗我对于DLLCALL一点都不懂
pusofalse 发表于 2010-11-13 14:24 http://www.autoitx.com/images/common/back.gif
加了你的代码,确实能在程序运行期间保护释放的文件不被删除,
但同时我也不能调用这个文件,不知道为什么。 本帖最后由 pusofalse 于 2010-11-13 17:45 编辑
回复 4# smooth
你是怎么调用那个文件的?当成文本读写里面的内容?还是当做一个可执行文件来创建进程?
如果是前者,那就不要用FileOpen、FileRead、FileWrite这些函数,FileOpen会用独占模式打开文件,对于已经打开的文件,FileOpen会失败。用CreateFile、ReadFile、WriteFile代替。
如果是后者,那上面的代码根本没有意义,因为,既然已经创建了进程,那在进程执行期间,进程文件始终是不能删除的。或者,在创建进程之前,先用CloseHandle关闭句柄,在进程退出之后,再次调用CreateFile打开。 回复 5# pusofalse
我就是用runwait来调用呀。 学习一下,用得着的。
页:
[1]