在 C# 程序中存储特定于应用程序但用户可编辑的设置的适当方法是什么
本文关键字:编辑 设置 是什么 方法 用户 程序 存储 应用程序 | 更新日期: 2023-09-27 18:34:22
具体情况是这样的:
应用开发环境:
- 运行视窗 8 的电脑
- Visual Studio Pro 2013
- 电脑未加入域
- 项目正在用 C# 编码
该计划的目标:
- 2 台运行 Windows Server 2012 R2 的服务器
- 两者都是域的成员
- 两者都将为 RDP 连接的用户在本地运行应用程序
- 需要将数据存储到与 2012 服务器位于同一域中的 SQL 2005 服务器
- 需要从 sftp 服务器检索 csv 文件
目标:
- 将连接字符串存储到域上的 SQL 服务器
- 存储用户名和密码以访问 SFTP 服务器
- 让所有用户使用一个通用连接字符串连接到 SQL 服务器
- 让所有用户使用一组通用的身份验证凭据到 sftp 服务器
- 允许更改连接字符串或 sftp 凭据
- 使用加密存储连接字符串和 sftp 凭据
- 不要使用未加密的凭据部署应用程序,然后在安装后加密
- 切勿使连接字符串或 sftp 凭据对用户可读
- 允许存储的连接字符串和凭据可移植(如果可能(
描述:
我正在制作一个应用程序,该应用程序将从 sftp 服务器检索 csv,将其导入,然后将解析的数据加载到 SQL 数据库中。我需要存储 sftp 服务器的身份验证凭据,以便获取数据文件。之后,我需要导入数据,然后将其加载到一些SQL表中。我在加入域时没有对应用程序进行编码,但我仍然可以通过网络访问 SQL 服务器。在构建应用程序时,我需要能够具有包含用户名和密码的连接字符串。完成后,我想我可以使用受信任的连接来代替。我正在尽我所能保护所有这些设置。现在,虽然我不确定哪种存储它们的系统最合适。当应用程序部署到我们的用户时,我需要能够设置这些凭据供程序使用,然后在需要更改时再次设置。我不希望任何人能够看到密码,所以我正在尝试将它们加密存储,并且无论如何都不会提供查看它们。我只需要能够设置它们,以便应用程序能够访问 sftp 服务器和 SQL 服务器。
应用程序设置应该足够了。请参阅:http://msdn.microsoft.com/en-us/library/a65txexh.aspx
它们是可移植的 - 由于所有设置都存储在文件中,因此也可以按用户或计算机进行设置。关于编辑 - 由于设置是纯 xml 文件,用户可以使用任何编辑器编辑它们,或者您可以为配置提供自己的编辑器并进行适当的验证等。
首先,确定数据库和 ftp 设置的更改频率。 这将确定您需要做多少工作来建立管理这些加密设置的机制。
如果是低频率,只需使用可移植的标准App.config。 在此文件中,存储加密的数据库和 ftp 设置。 该应用程序将在使用前解密设置。 需要更改设置时,请在开发环境中使用更新的加密设置准备新的配置文件,并将新的配置文件部署到目标环境。
如果频率很高,只需执行与上述相同的操作,但每次不断准备和更新配置并重新部署都会很痛苦。 因此,与其这样做,不如在您的应用程序上添加一些身份验证和授权功能。 只有具有管理员权限的用户才能打开一个表单,该表单可以读取/解密配置上的设置、更改值并将加密的设置保存回配置文件中。