Microsofts处理应用程序配置和运行时数据的首选方法乍一看似乎很明显:App.config,它将存储在应用程序执行目录中(大多数情况下为C:\ Program Files \ ProductLocation。),其中只有特权用户有写访问权限。 (对我来说很有意义,因为临时用户不应该改变必要的应用程序配置。)
对于普通用户配置,有一个user.config,它将被复制到每个用户个人应用程序数据目录(%APPDATA%)。
但这会导致一些问题:
我查看了程序数据文件夹(%PROGRAMDATA% - > C:\ ProgramData),但似乎这个地方对于标准用户来说是只读的。 (如果需要,Windows Installer会在此处创建文件夹,但它们都是只读的。) - >发生什么事情发生在%ALLUSERS%?
微软方式可能在我眼中失败的示例:
每个用户都应将其信息存储在同一数据库(SqlCE文件数据库)中的金融应用程序,其中应用程序必须以用户权限运行(我不想成为管理员来管理我的钱包)。应用程序需要连接到在运行时不可用的数据库,并且可能在使用EntityFramework的第一次运行期间生成。因此,即使连接字符串必须是动态的,也不可能在修复此类信息的app.settings中配置。
这是愚蠢的!用户可以通过直接访问文件数据库来读取其他用户的敏感信息!
- >安全性不仅是文件权限,还可能有数据库用户,证书,加密等。)
我是否必须开发自己的设置处理程序作为Microsoft预期方式的变通方法?
我想这个问题在SO上被多次询问,但我找到的每个答案都显示了解决方法,不同的解决方案。关于“最佳实践”的问题立即关闭,所以我试着在这里提供一个实际的例子。