我正在做一个小项目。 它是Windows窗体应用程序。 我有一个文件夹(C:/源)的一些来源。 当我的程序运行时,它使用来自文件夹的来源。 目前我可以通过Windows资源pipe理器编辑文件夹,它可以导致我的程序错误。 所以我想在我的程序运行时locking文件夹(C:/ sources)被编辑/重命名/删除。 怎么做?
编辑; 当用户尝试编辑文件夹时是否可以显示这样的消息:
“该操作无法完成,因为该文件夹或其中的文件在另一个程序中打开”
我们谈的节目是我的..
有几种方法可以冒险,它们的实现难度各不相同。 这完全取决于这个任务对你有多重要。 但是,在讨论这些选择之前, 你不能将这些资源嵌入到你的WinForms应用程序中吗? 如果这不是一个选项,那么你可以执行以下任一操作:
编写一个设备驱动程序,如果您的应用程序正在运行,可以禁止访问这些资源。 这种方法有一些倒退。 例如,可以通过具有相同名称来模拟您的应用程序。 但是,我正试图解决当前问题的可能解决办法,而不是试图打破任何方法。 有不同类型的驱动程序,你可以考虑。 这种方法的最简单形式可能是实现一个微型过滤器驱动程序。
钩住某些API像CreateFile()
, NtCreateFile()
, ZwCreateFile()
虽然有很多方法来规避这种防御机制。 但是,我们也只是冒险做你能做的事来解决你的这个限制。
直接从您的应用程序打开这些资源,并专门锁定它。 例如:
File.Open("test.txt", FileMode.Open, FileAccess.Read, FileShare.None);
因为如果他们试图打开文件,这将导致人们得到你想要的信息。
也许你可以提供关于这些资源的更多信息,我们可以帮助你确定哪种方法是以合理的方式保护你的文件的最好方法?
虽然我不认为最好的办法是在C:驱动器这样的开放区域拥有对应用程序至关重要的文件,但我会查看NTFS文件的权限,并将该文件夹设置为只读,但这不会阻止管理用户
看到这两个职位
限制访问程序外的文件夹c#
在C#.NET中设置NTFS权限