8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

wpf 应用程序设置实际上是如何工作的?

MichaelD 1月前

22 0

在我的应用程序中,我有一个带有 IP 地址 / 登录名 / 密码 / 记住我检查器的简单登录页面。当我检查记住我时,应用程序会将这些数据存储在以下文件中:C:\Users\user\AppData\Local\...

在我的应用程序中,我有一个带有 IP 地址/登录名/密码/记住我检查器的简易登录页面。

当我检查记住我时,应用程序将这些数据存储在以下文件中:C:\Users\user\AppData\Local\App\App.exe_Url_5b4qolbj3ip4ltms1ohyh4cdivud5wfg\1.0.0.0\user.config

这对我来说完全没问题,但问题是(我不知道为什么会发生这种情况)当我构建 SetupWizard.msi 时,此 user.config 是由应用程序文件夹中的应用程序创建的。

然后,当我执行程序并选中“记住我”框时,它不会将值存储在此应用程序创建的 user.config 中,但仍存储在 AppData 文件中。

有什么方法可以删除应用程序文件夹中的 user.config 并将其仅存储在 AppData 中吗?主要原因是此配置文件(由安装创建)有两个扩展名:App.exe.config。我不可能在发布时将其保留为那样。

保存代码

        public void Save_data()
    {
        if (CheckBoxRemCredts.IsChecked == true)
        {
            Properties.Settings.Default.userName = txtBoxLogin.Text;
            Variable.passEncrypted = (Encrypt(pswBox.Password));
            //  MessageBox.Show(Variable.passEncrypted); Debugging
            Properties.Settings.Default.userPass = Variable.passEncrypted;
            Properties.Settings.Default.ipAddress = txtBoxIP.Text;
            Properties.Settings.Default.Remme = "yes";
            Properties.Settings.Default.Save();
        }
        else
        {
            Properties.Settings.Default.userName = txtBoxLogin.Text;
            Properties.Settings.Default.userPass = pswBox.Password;
            Properties.Settings.Default.ipAddress = txtBoxIP.Text;
            Properties.Settings.Default.Remme = "no";
            Properties.Settings.Default.Reset();
        }
    }

设置.settings 文件:

   namespace SMS_Vrána.Properties {


[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.7.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {

    private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

    public static Settings Default {
        get {
            return defaultInstance;
        }
    }

    [global::System.Configuration.UserScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Configuration.DefaultSettingValueAttribute("")]
    public string userPass {
        get {
            return ((string)(this["userPass"]));
        }
        set {
            this["userPass"] = value;
        }
    }

    [global::System.Configuration.UserScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Configuration.DefaultSettingValueAttribute("")]
    public string Remme {
        get {
            return ((string)(this["Remme"]));
        }
        set {
            this["Remme"] = value;
        }
    }

    [global::System.Configuration.UserScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Configuration.DefaultSettingValueAttribute("")]
    public string ipAddress {
        get {
            return ((string)(this["ipAddress"]));
        }
        set {
            this["ipAddress"] = value;
        }
    }

    [global::System.Configuration.UserScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Configuration.DefaultSettingValueAttribute("")]
    public string userName {
        get {
            return ((string)(this["userName"]));
        }
        set {
            this["userName"] = value;
        }
    }
}

}

帖子版权声明 1、本帖标题:wpf 应用程序设置实际上是如何工作的?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由MichaelD在本站《vb.net》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 检查您的设置范围。您可以通过在解决方案资源管理器 -> 属性 -> 设置中右键单击项目名称来执行此操作。您的代码表明它是 User 。以下是设置可能无法保存的原因:

    根据范围,应用程序设置有两种类型:

    • 应用程序范围的设置可用于诸如 Web 服务的 URL 或数据库连接字符串等信息。这些值与应用程序相关联。因此,用户无法在运行时更改它们。
    • 用户范围的设置可用于保存诸如保留表单的最后位置或字体首选项等信息。用户可以在运行时更改这些值。

    您可以使用 Scope 属性来更改设置的类型。

    项目系统将应用程序设置存储在两个 XML 文件中:

    • app.config 文件,该文件是在设计时创建第一个应用程序设置时创建的
    • user.config 文件,当运行应用程序的用户更改任何用户设置的值时,在运行时创建该文件。

    请注意,除非应用程序专门调用某种方法来执行此操作,否则用户设置的更改不会写入磁盘。

    有关设置的更多信息, 请点击此处 .

  • OP 代码中的 [global::System.Configuration.UserScopedSettingAttribute()] 暗示设置确实是用户范围的。

  • 非常抱歉,现在我意识到我表达得不好。我不想在我的安装路径中出现它。我希望该 user.config 只在 AppData 中,或者至少可以隐藏在安装路径中。

  • @Cabry 抱歉,但事实并非如此。我想到的唯一解决方案是当文件出现时通过编程删除它。

  • 有什么方法可以删除应用程序文件夹中的 user.config 并将其仅存储在 AppData 中吗?主要原因是此(由安装创建)配置文件有两个扩展名:App.exe.config。

    .NET 设置的工作原理如下。 user.config 如果您有用户级设置,则应用程序需要该文件; app.config 如果您有应用级设置,则应用程序需要该文件。当应用程序创建新的用户设置文件时,它会将文件 user.config 从安装文件夹复制到该 AppData\Local\ 文件夹​​。同样,当它创建文件时 {APPNAME}.exe.config ,它会复制安装文件夹中的文件。

    简而言之,没有理由删除(但有很多理由保留) user.config 应用程序安装文件夹中的文件。

返回
作者最近主题: