从文件夹移动或复制时,应用程序是否在加载时无法正确读取my.setting?

时间:2015-09-11 21:03:34

标签: vb.net visual-c++

这是我的代码:

Public ATTEMPTS As Integer = My.Settings.ATTEMPTS

Private Sub EKV_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    If My.Settings.ATTEMPTS = 3 Then
        Me.Enabled = False
        MSGBOX.Show()
    Else
        VKBox.Select()
    End If
End Sub

我遇到的问题基本上是这样的:用户有三次尝试输入密码来访问信息。每次用户无法正确输入密码时,我在应用程序设置中设置了一个名为“ATTEMPTS”的变量。最初是my.settings.ATTEMPTS = 0但是在每次尝试之后它再添加一次尝试直到ATTEMPTS = 3.我还设置了应用程序以在每次添加尝试时保存设置,这样即使他们关闭应用程序并再试一次记录并保存尝试次数。当我在Visual Basic中调试应用程序时,一切正常,如果尝试= 3或不= 3,那么它会识别并加载正确的表单。但是当我发布应用程序或者甚至尝试将应用程序从visual basic文件夹下的文件夹移动或复制到另一个地方时,它会在第一次尝试打开应用程序时立即识别ATTEMPTS = 3并加载错误的表单,但是我将应用程序移回到它识别ATTEMPTS = 0的文件夹并加载正确的表单????我已经尝试启用make一个单实例应用程序选项,而我正在尝试的其他任何工作都没有!?请帮忙。

1 个答案:

答案 0 :(得分:0)

您的设置保存在路径shown in this answer中。而叶子目录路径的哈希值取决于EXE文件的目录。因此,每次移动EXE时,都会创建新设置。您可以使用以下几种方法:

  • 覆盖如何确定设置保存位置并使位置固定 - 请参阅上面链接的答案。 (但请将它们保存在当前位置附近,而不是使用EXE。)
  • 在注册表中保存设置而不是设置文件。
  • 扫描应用程序的所有设置文件夹(旧的和新的,它们在一起),并查找具有最新日期/时间的设置文件。从该文件中读取值并将其导入您的设置。