2

在我的应用程序中,我有一些将数据存储在用户硬盘上的 Save 方法。一旦应用程序仍然可以访问、更改和删除这些文件,怎么可能阻止用户访问、更改或删除这些文件?

可能的解决方案是以管理员身份在一个受限用户上运行应用程序,该用户无权访问保存文件夹,但使用存储在应用程序中的系统管理员的预定义用户名和密码。

我已经阅读了与 UAC、Application Manifest 一起使用的其他主题。

正如我在标题中提到的,是否可以在没有用户交互的情况下以管理员身份运行程序?

编辑 1:我正在寻找适用于所有版本的 windows(XP、Vista 和 7)的解决方案

4

2 回答 2

4

我假设您已经研究了 ACL 的功能,但您无法让它们满足您的需求。例如,您可以设置一个 ACL,允许任何用户创建文件,任何用户修改或删除他们创建的文件,但不能修改或删除其他用户的文件。


解决这个问题的正确方法是将应用程序分成两部分。一个作为 Windows 服务、Activate-As-Configured-User DCOM 服务器或其他提升的进程运行,另一个作为哑老用户运行。

当客户端应用程序希望执行需要提升的操作时,它会将请求传递给应用程序的提升部分。这将执行所需的任何安全检查、应用程序逻辑检查等,然后执行操作。

通过这种方式,您可以防止用户通过后门进入并弄乱您的应用程序数据。然而,它并没有真正帮助他们通过前门弄乱数据。

于 2012-04-08T19:40:07.563 回答
0

@HarryJohnston 在评论中说:

“要执行您的要求,请编写一个启动器应用程序,该应用程序使用 CreateProcessWithLogonW(具有已知的管理员用户名和密码)来启动真正的应用程序。请注意,有能力的用户将能够提取管理员凭据并以身份登录管理员。Ben 的答案(拆分应用程序)是正确的方法。

这是我选择的答案。

于 2012-04-10T09:37:28.090 回答