c# - 如何绕过应用程序范围设置为只读?

标签 c# wpf settings uac

如果无论如何都无法更改它们的默认值,它们有什么用?反问。

首先,绕过设置系统并直接写入应用程序范围设置文件的最佳方法是什么(下一段中的安全问题)? XmlReader/XmlWriter?

IIRC,如果应用程序试图写入其 Program Files 文件夹,Windows Vista 和 7 会采取一些措施来防止这种情况发生。我想我需要调用 UAC 来提升,我必须把那个花哨的盾牌图标放在我应用程序的选项窗口的确定按钮上等等。链接到快速操作方法?

或者,您可能会告诉我,我正在尝试做的事情很愚蠢,我应该将我的可变应用程序范围设置完全存储在其他地方。

最佳答案

如果您将它们更改为“用户”设置,则可以在代码中进行更改,并且当您调用 Save() 时,它们将保存到当前用户本地设置文件夹中的 user.config 文件中。

显然,这意味着它们对于每个用户来说都可能不同。通常,不会在代码中修改对每个用户都相同的全局应用程序设置,因为一个用户所做的更改会影响其他所有人(因此应用程序设置是只读的)。

如果您不希望它们在用户范围内,请查看 ConfigurationManager类(class)。这将允许您手动读取和写入 .config 文件。请记住,尽管 c:\program files\文件夹受到保护,普通用户无法访问它(这将导致 UAC 提示或在 vista/win7 中失败)。仔细考虑您将如何处理它,并记住对 app.config 的任何更改都会影响所有用户。

Windows 中没有任何位置可以保证所有用户都具有写入权限。

关于c# - 如何绕过应用程序范围设置为只读?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1687321/

相关文章:

c# - 是什么导致此 ASP.NET 标记被视为字符串?

c# - WPF - 具有自定义 DefaultStyleKey 的自定义窗口丢失 FocusVisualStyle

android - 如何从应用程序显示 "Voice Input and Output"设置页面?

c# - 如何在不同的解决方案之间共享同一个 Visual Studio 项目?不同的 app.config 和 settings.settings

Angular - 在客户刷新页面或清理缓存之前,更改不会显示在生产中

c# - 正确调整包含未知尺寸图像的 iframe 的大小

c# - 在字符串中查找主题标签

c# - 枚举和常量。什么时候使用哪个?

c# - 无法将属性 'Property' 中的值转换为类型 'System.Windows.DependencyProperty' 的对象

c# - WPF - 从代码隐藏/附加行为绑定(bind)到显式实现的接口(interface)属性