我是新来的vb.net而且我遇到了一些我认为应该很容易解决的问题。我设置我的程序让用户决定他或她是否希望在Windows启动时运行该程序。它实际上工作正常,因为它将注册表值分配给CurrentUser而不是Local Machine,因为需要绕过管理员权限。但是,当我重新启动计算机时,程序正常启动,但它不会读取与程序位于同一文件夹中的访问数据库;它试图从Windows \ System32读取数据库。
有没有办法强制它从可执行路径而不是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
答案 0 :(得分:0)
因此,当操作系统启动您的程序时,当前目录为%windir%\System32
。
您需要将所有现有路径调整为明确相对于Application.ExecutablePath
,或者将
My.Computer.FileSystem.CurrentDirectory = My.Application.Info.DirectoryPath
在您的计划开始时(这是ChDir ...
的现代版本)。