我对CreateFile做了hook,限制对文件的访问。要求对扩展名为txt的文件,禁止写入。
在我的hook函数中,通过判断accessmode是否包含GENERIC_WRITE属性,来决定中止Createfile,
return INVALIDE_FILE_HANDLe.
在测试中就遇到一个奇怪的问题,我用Notepad打开一个a.txt文件,修改后,保存,这个时候
Notepad会调用CreateFile,访问方式是GENERIC_READ|GENERIC_WRITE,当然我会拒绝它的访问。
Notepad发现保存失败后,会选择“另存为”的方法。我这是仍然选择文件名为a.txt,这个时候
Notepad再次调用CreateFile,访问方式居然是GENERIC_READ。关闭notepad,再次打开a.txt,
修改的结果被保存了。
我想问一下,用CreateFile打开文件,方式选为GENERIC_READ,难道可以对文件写吗?是否还要结合CreateFile的其他参数使用呢?请大家指点。
快过年了,祝CSDN各位朋友新年快乐。
在我的hook函数中,通过判断accessmode是否包含GENERIC_WRITE属性,来决定中止Createfile,
return INVALIDE_FILE_HANDLe.
在测试中就遇到一个奇怪的问题,我用Notepad打开一个a.txt文件,修改后,保存,这个时候
Notepad会调用CreateFile,访问方式是GENERIC_READ|GENERIC_WRITE,当然我会拒绝它的访问。
Notepad发现保存失败后,会选择“另存为”的方法。我这是仍然选择文件名为a.txt,这个时候
Notepad再次调用CreateFile,访问方式居然是GENERIC_READ。关闭notepad,再次打开a.txt,
修改的结果被保存了。
我想问一下,用CreateFile打开文件,方式选为GENERIC_READ,难道可以对文件写吗?是否还要结合CreateFile的其他参数使用呢?请大家指点。
快过年了,祝CSDN各位朋友新年快乐。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货