1

私はここと vb.net が初めてで、簡単に解決できるはずだと感じていることに行き詰まっています。Windowsの起動時にプログラムを実行するかどうかをユーザーが決定できるように、プログラムをセットアップしました。管理者権限をバイパスする必要があるため、Local Machine ではなく CurrentUser にレジストリ値を割り当てているため、実際には問題なく動作します。ただし、コンピューターを再起動すると、プログラムは通常どおり起動しますが、プログラムと同じフォルダーにあるアクセス データベースを読み取れません。Windows\System32 から DB を読み取ろうとします。

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

したがって、OS がプログラムを起動すると、現在のディレクトリ%windir%\System32.

Application.ExecutablePath既存のすべてのパスを明示的に相対するように調整するか、配置する必要があります

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

プログラムの開始時に (これは の最新バージョンですChDir ...)。

于 2013-06-23T06:28:53.223 に答える