如何处理应用程序配置和数据?

时间:2013-05-27 07:28:33

标签: c# .net entity-framework security configuration

Microsofts处理应用程序配置和运行时数据的首选方法乍一看似乎很明显:App.config,它将存储在应用程序执行目录中(大多数情况下为C:\ Program Files \ ProductLocation。),其中只有特权用户有写访问权限。 (对我来说很有意义,因为临时用户不应该改变必要的应用程序配置。)

对于普通用户配置,有一个user.config,它将被复制到每个用户个人应用程序数据目录(%APPDATA%)。

但这会导致一些问题:

  • 如何在不以管理员身份执行流程的情况下更改每个用户的配置?
  • 我应该在哪里存储未与应用程序一起部署的应用程序数据,而应该在第一次启动应用程序时生成?
  • 怎么可能有例如动态连接字符串,比如数据库运行状况监视器应用程序?

我查看了程序数据文件夹(%PROGRAMDATA% - > C:\ ProgramData),但似乎这个地方对于标准用户来说是只读的。 (如果需要,Windows Installer会在此处创建文件夹,但它们都是只读的。) - >发生什么事情发生在%ALLUSERS%?


微软方式可能在我眼中失败的示例:

每个用户都应将其信息存储在同一数据库(SqlCE文件数据库)中的金融应用程序,其中应用程序必须以用户权限运行(我不想成为管理员来管理我的钱包)。应用程序需要连接到在运行时不可用的数据库,并且可能在使用EntityFramework的第一次运行期间生成。因此,即使连接字符串必须是动态的,也不可能在修复此类信息的app.settings中配置。

  • 这是愚蠢的!用户可以通过直接访问文件数据库来读取其他用户的敏感信息!

    - >安全性不仅是文件权限,还可能有数据库用户,证书,加密等。)


我是否必须开发自己的设置处理程序作为Microsoft预期方式的变通方法?

我想这个问题在SO上被多次询问,但我找到的每个答案都显示了解决方法,不同的解决方案。关于“最佳实践”的问题立即关闭,所以我试着在这里提供一个实际的例子。

0 个答案:

没有答案