在我的应用程序中,我有一些保存数据在用户的硬盘上的方法。 一旦应用程序仍然可以访问,更改和删除文件,如何防止用户访问,更改或删除文件?
可能的解决scheme是在有限的用户身上运行应用程序pipe理员,这些用户无权访问保存文件夹,但是具有存储在应用程序中的系统pipe理员的预定义用户名和密码。
我已经阅读了与UAC应用程序清单一起工作的其他主题。
正如我在标题中提到的那样,可以在没有用户交互的情况下以pipe理员身份运行程序
编辑1:我正在寻找一个解决scheme适用于所有版本的Windows(XP,Vista和七)
我假设你已经调查了ACL的功能,并且不能使它们满足你的需求。 例如,你可以设置一个ACL,允许任何用户创建一个文件,任何用户修改或删除他们创建的文件,但不能修改或删除其他用户的文件。
解决这个问题的正确方法是将应用程序分为两部分。 一个是作为一个Windows服务,激活作为配置的用户DCOM服务器或其他高架的过程,另一个是作为愚蠢的老用户运行。
当客户应用程序希望执行需要提升的动作时,它将请求传递给应用程序的升高的一半。 这将执行所需的任何安全检查,应用程序逻辑检查等,然后执行此操作。
通过这种方式,您可以防止用户进入后门,弄乱应用程序数据。 但是,它们并没有真正帮助他们通过前门搞乱数据。
@哈里约翰斯顿在评论中表示:
“要做你想要的东西,写一个使用CreateProcessWithLogonW(带有一个已知的管理员用户名和密码)的启动程序来启动实际的应用程序。要注意一个合格的用户将能够提取管理员凭证并以Ben的答案(一个分裂的申请)是正确的方法。“
这是我选择的答案。