是否有可能只为.NET桌面应用程序中的特定配置嵌入配置?

von4xj4u  于 2023-01-27  发布在  .NET
关注(0)|答案(1)|浏览(133)

桌面应用程序(WPF、.NET 4.6.2)在app.config中有许多设置。这些设置对于特定配置具有不同的值:App.Debug.config和App. Release.config。QA工程师很乐意更改App.Debug.config中的值,并在测试环境中测试不同的应用程序模式。但是,出于安全考虑,我希望阻止生产用户更改任何参数。目前,用户可以编辑配置文件,重启应用程序,并在意外模式下使用应用程序。
我可以将设置移动到嵌入式资源(或者只是一些配置类中的硬代码),但是在这种情况下,QA不能动态地更改参数,从而失去了测试灵活性。
最好配置应用程序和构建过程,使调试配置为App.Debug.config。并使发布配置为嵌入式App.Release.config。我不知道如何实现这一点,也许你知道如何实现它?

vsikbqxv

vsikbqxv1#

防止用户进行任何更改应该是相当容易的。
1.确保您的设置使用“应用程序”范围
1.在program-files文件夹中安装应用程序
1.确保您的用户没有以管理员权限运行
这应该可以防止任何用户对配置文件进行任何更改。
请记住,大多数用户不会随意更改应用程序设置、注册表设置或其他他们不了解的内容。如果他们这样做,您可以告诉他们责怪自己并重新安装。
如果您的用户实际上是以管理员身份运行的,您无法真正阻止他们进行更改,只能使更改变得更加困难。因此,您确实不应该存储任何安全敏感的内容,如果用户是管理员,则不应该访问这些内容。
如果你觉得增加难度就足够了,你可以考虑一些内置设置的替代方案。例如:
1.创建一个设置类,其中包含所有您可能需要的配置的默认值。确保它是可序列化的。创建此类的对象。
1.检查启动时是否存在某些文件。使用#if DEBUG仅在调试时运行此文件
1.如果文件存在,反序列化并设置为当前设置对象
1.如果没有,则将当前设置对象序列化为文件
1.将此设置对象分发到应用程序中的所有组件。依赖项注入容器可能有助于此操作。
使用JSON序列化之类的东西还有一个好处,那就是可以序列化更复杂的对象。

相关问题