我正在开发一个用Java编写的Windows应用程序,它将项目特定的信息和设置写入特定的项目文件中。我希望只有这个应用程序可以读取和修改项目文件和设置,这些文件不能由用户通过某些文本编辑器读取或编辑,也不能由其他应用程序写入。我正在考虑添加模糊处理以防止信息访问,但我如何阻止任何其他用户进程写入文件。
答案 0 :(得分:3)
只要您的应用程序正在运行,您就可以在应用程序中保持文件打开状态。您可以指定其他进程在打开文件时打开时如何访问该文件(默认情况下通常是没有其他人可以写入文件)¹。
但是,如果您的应用程序一直没有运行,那么显然是行不通的。解决此问题的常用方法是在单独的用户帐户下运行应用程序,并仅授予该帐户修改文件的权限。当然,这种情况适用于服务器和服务,但对于普通的面向用户的应用程序来说却很少见。
您可以使用模糊处理,或将内容存储在其他地方(例如,另一个地方的另一个文件,注册表,ADS,......)并尝试从不匹配中恢复。但从根本上说,除非单独的用户帐户,否则您无法实际禁止访问文件。在Windows上无法使用进程级粒度完成此类操作。
¹我不确定Java会给你多少控制权。快速查看FileInputStream
似乎完全无法控制句柄的共享策略。但是,您可以使用本机代码打开该文件,但我现在还不确定如何将其传递给通常的Java I / O类。这可能很难。