我在这里和vb.net都很新,而且我被困在某些我觉得应该很容易解决的东西上。我设置我的程序让用户决定他或她是否想让程序在Windows启动时运行。它实际上工作正常,因为它将注册表值分配给CurrentUser而不是本地计算机,因为管理权限需要被绕过。但是,当我重新启动计算机时,程序正常运行,但它不会读取与程序位于同一文件夹中的我的访问数据库;它会尝试从Windows \ System32读取数据库。当程序运行在vb.net启动时读取数据库的一个问题
有没有办法强制它从可执行文件路径而不是System32读取?
这里是我的简单的代码:
Private Sub startup()
If cbStartup.Checked = True Then
My.Computer.Registry.CurrentUser.OpenSubKey("Software").OpenSubKey("Microsoft").OpenSubKey("Windows").OpenSubKey("CurrentVersion").OpenSubKey("Run", True).SetValue("CC_List", System.Windows.Forms.Application.ExecutablePath)
ElseIf cbStartup.Checked = False Then
My.Computer.Registry.CurrentUser.OpenSubKey("Software").OpenSubKey("Microsoft").OpenSubKey("Windows").OpenSubKey("CurrentVersion").OpenSubKey("Run", True).DeleteValue("CC_List", False)
End If
End Sub
“在Windows启动时运行”是指“在任何人登录之前”?当您设置该值时,它将被设置在属于登录用户的空间中。但是如果你试图在没有人登录时运行它,我不确定currentuser是否有价值 - 我敢肯定它不会和上次登录的用户相同。你可能有更多的运气审查/张贴打开数据库的代码 - 看看你是否可以在那里获取System.Windows.Forms.Application.ExecutablePath。 – GregHNZ
感谢您的回复。但是,“System.Windows.Forms.Application.ExecutablePath”在最后的“IF”语句的第一部分中(是您的意思?)。 :)它有和没有登录到用户帐户这个错误。我已经在两种场景中尝试过了。该程序启动正常。这种情况是,它已经被用户设置为在Windows加载时自动启动。 CurrentUser确实有一个值集,否则程序不会自动加载,是否正确?当我添加它时,我也测试了它的价值。 –
是不是够用Application.StartupPath? – matzone