我正在开发一个小办公室的申请,以维持他们的货币账户。 我的应用程序可以帮助创build一个可以存储所有信息的文件。 但是除了我的应用程序之外,它不应该被用户访问。 为什么? 因为有人可能会删除文件,所有的logging将会消失。 该环境是一个Windows个人电脑与一个单一的帐户pipe理权限。 我正在使用MinGW编译器在C ++中开发应用程序。 我现在有点空白,至于如何创build这样一个文件。 有什么build议吗?
如果您的应用程序可以修改它,那么运行其凭据的用户可以修改它。 另外,如果他拥有管理员权限,那么即使您的应用程序运行在不同的凭据下,并且该文件受ACL保护,也无法阻止他删除内容。
现在,由于这个问题似乎不是安全的,而是为了保护用户不受自己的影响,我只是将文件存储在一个“看不见”的位置,并对此感到满意。 将数据写入%APPDATA%\yourappname
1 ,这样的目录专门用于用户特定的应用程序数据,而不是用户直接触摸的数据。
如果你想成为偏执的人,你可以启用你可以找到的每个安全设置(隐藏目录,当应用程序没有运行时用限制性ACL保护它,打开它来独占访问,…),但是如果你问我只是浪费时间:
%APPDATA%
路径。 确保您的应用程序在Windows启动时加载,并使用dwShareMode
0选项打开文件。
这是一个MSDN示例
您将需要给这些文件自己的文件扩展名,也许还有其他安全措施(即文件的密码)。 如果你想这些文件被Windows建议,那么你将不得不做一些与注册表的工作。
这是一个很好的来源,因为你只关心Windows。
http://msdn.microsoft.com/en-us/library/windows/desktop/ff513920(v=vs.85).aspx
至于保存数据被删除,冗余我的朋友冗余。 与网络管理员讨论他们如何保持数据安全。 我敢打赌,他们把很多备份命名为其中一个原因。
但是除了我的应用程序之外,它不应该被用户访问。
你不能这样做。
如果用户有足够的判断,所有存在于机器用户身上的物理访问权限都可以被删除。
您可以保护您的文件在程序运行时不被删除 – 在Windows上,您不能删除打开的文件。 保持文件打开,程序运行时不会将其删除。 相反,他们会通过任务管理器杀死你的程序,并删除文件。
要么,要么你可以把它上传到某个地方。 不能在物理上访问的设备上的数据不容易被用户删除。 然而,有人将不得不运行服务器(并处理安全性+可能写服务器软件)。 在你的情况下,它可能不值得。
我建议在帮助文件中记录用户数据的位置,你应该把“!不要删除this.txt”或其他东西放到这个文件的文件夹中。