1

我正在开发一个小型办公室的应用程序来维护他们的货币账户。我的应用程序可以帮助创建一个可以存储所有信息的文件。但除了在我的应用程序中之外,用户不应访问它。为什么?因为有人可能会删除文件,所有记录都会消失。该环境是具有管理员权限的单个帐户的 Windows PC。我正在使用 MinGW 编译器在 C++ 中开发应用程序。我现在有点空白,至于如何创建这样的文件。请问有什么建议吗?

4

4 回答 4

4

如果您的应用程序可以修改它,那么运行它的凭据的用户可以修改它,期间。此外,如果他具有管理员权限,那么即使您的应用程序在不同的凭据下运行并且文件受 ACL 保护,您也无法阻止他删除内容。

现在,由于问题似乎不是安全问题,而是保护用户免受他自己的伤害,我只需将文件存储在足够“看不见”的位置并对此感到满意;将您的数据写入%APPDATA%\yourappname1,这样的目录专门用于用户不打算直接接触的用户特定应用程序数据。

如果你想变得偏执,你可以启用你能找到的每一个安全设置(隐藏目录,在应用程序不运行时使用限制性 ACL 保护它,打开它以进行独占访问,...),但如果你问我这是只是浪费时间:

  • 普通用户(我们的目标 AFAICT)不会弄乱 appdata,因为它一开始是一个隐藏文件夹;
  • 乱搞的“高级用户”,如果有足够的决心在脚上开枪(或自愿造成伤害),就会找到一种方法,因为在您的情况下很容易绕过安全设置(管理员可以拥有任何文件的所有权和更改其 ACL,并使用 Unlocker 等应用程序来规避文件锁定);
  • 有正当理由访问该文件的技术人员(例如,他必须对其进行/恢复备份)会对所有这些无用的预防措施感到沮丧。

  1. %APPDATA%您可以通过扩展相应的环境变量或通过 SHGetFolderPath/SHGetKnownFolderPath(或他们在新 Windows 版本中为其发明的任何替代)来获取实际路径。
于 2013-10-02T03:16:13.977 回答
1

dwShareMode确保您的应用程序在 Windows 启动时加载并使用0 选项打开文件。

这是一个MSDN 示例

于 2013-10-02T03:12:41.160 回答
0

您需要为这些文件提供自己的文件扩展名和其他安全措施(即文件密码)。如果您希望 Windows 建议这些文件,那么您必须对注册表进行一些处理。

这是一个很好的来源,因为您只关心 Windows:

http://msdn.microsoft.com/en-us/library/windows/desktop/ff513920(v=vs.85).aspx

至于防止数据被删除,冗余我的朋友冗余。与网络管理员讨论他们如何保护数据安全。我敢打赌他们将大量备份命名为他们的原因之一。

于 2013-10-02T03:16:56.823 回答
0

但除了在我的应用程序中之外,用户不应访问它。

你不能这样做。

如果用户有足够的决心,可以删除机器用户上存在的所有物理访问权限。

您可以保护您的文件在程序运行时不被删除- 在 Windows 上,您无法删除打开的文件。保持文件打开,当你的程序运行时人们不会删除它。相反,他们会通过任务管理器杀死你的程序并删除文件。

要么,要么你可以把它上传到某个地方。用户无法轻易删除不在物理可访问设备上的数据。但是,必须有人运行服务器(并处理安全性+可能编写服务器软件)。在你的情况下,它可能不值得。

我建议在帮助文件中记录用户数据的位置,并且您可能应该将“!不要删除 this.txt”或其他内容放入包含此文件的文件夹中。

于 2013-10-02T04:12:30.343 回答