1

我是新来的 vb.net,我被困在我觉得应该很容易解决的事情上。我设置我的程序让用户决定他或她是否想让程序在 Windows 启动时运行。它实际上工作正常,因为它将注册表值分配给 CurrentUser 而不是本地机器,因为需要绕过管理员权限。但是,当我重新启动计算机时,程序会正常启动,但它不会读取与程序位于同一文件夹中的访问数据库;它尝试从 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
4

1 回答 1

0

因此,当操作系统启动您的程序时,当前目录%windir%\System32.

您需要将所有现有路径调整为显式相对于Application.ExecutablePath,或者放置

My.Computer.FileSystem.CurrentDirectory = My.Application.Info.DirectoryPath

在您的程序开始时(这是 的现代版本ChDir ...)。

于 2013-06-23T06:28:53.223 回答