使用预定义的用户名和密码以管理员身份运行应用

时间:2012-04-07 09:48:27

标签: c# windows file-io permissions administrator

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

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

我已阅读其他主题与UAC,Application Manifest一起使用。

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

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

2 个答案:

答案 0 :(得分:4)

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


解决此问题的正确方法是将应用程序分为两部分。一个是作为Windows服务,激活配置用户DCOM服务器或其他提升过程运行,另一个是作为愚蠢的老用户运行。

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

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

答案 1 :(得分:0)

@HarryJohnston在评论中说:

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

这是我选择的答案。