我在這裏和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