C#撰寫的windows服務啟動后連接不了共享出來的sqlite資料庫,提示沒有找到資料庫。。。但是console程式一點問題沒有,這是服務權限問題嗎?
uj5u.com熱心網友回復:
自己頂一頂,期盼高手來解決問題。uj5u.com熱心網友回復:
文不對題,但是,使用網路共享上的SQLite檔案,非常可能造成日后的資料災難。
uj5u.com熱心網友回復:
你的服務程式和 console 程式在同一臺機器上嗎?sqlite 資料庫不支持多用戶共享讀寫,它只是個嵌入到程式中的本地資料庫。uj5u.com熱心網友回復:
是的,同一臺電腦上,但是為什么,console程式就可以,服務就不行呢。。。這點我沒搞明白啊,是服務要設定啥嘛?
uj5u.com熱心網友回復:
道理是這么個道理,但是現實總是這么不盡如人意啊。。。只讀,不寫。。。所以應該災難不大,關鍵是咋解決問題呢?
uj5u.com熱心網友回復:
提示沒有找到資料庫。。。都出這個提示了,那就是你放的路徑不對,而不是權限問題,如果是權限問題,怎么會是這樣的提示呢?uj5u.com熱心網友回復:
路徑放不對,怎么解釋console程式完美運行呢?而服務就報這個錯呢?這個路徑是其他服務器共享出來的檔案夾(前提)
uj5u.com熱心網友回復:
仔細除錯你的服務程式 打斷點進一下路徑看看uj5u.com熱心網友回復:
你看到的網路共享是當前登錄用戶的網路共享。服務程式一般運行在System賬號下,不同于當前登錄的互動用戶。
當前用戶運行的console,可以使用當前用戶的網路共享。不等于System賬號就能使用該網路共享。
uj5u.com熱心網友回復:


你們說路徑不對的,告訴我,我這路徑哪里不對了,要咋寫。。。一個是其他服務器共享出來的,我本機能正常打開。一個是我配置的路徑。同樣的路徑,console可以運行,但是安裝成服務就報錯。情況就是這樣了。
uj5u.com熱心網友回復:
提示沒有找到資料庫。。。都出這個提示了,那就是你放的路徑不對,而不是權限問題,如果是權限問題,怎么會是這樣的提示呢?
路徑放不對,怎么解釋console程式完美運行呢?而服務就報這個錯呢?這個路徑是其他服務器共享出來的檔案夾(前提)
你看到的網路共享是當前登錄用戶的網路共享。服務程式一般運行在System賬號下,不同于當前登錄的互動用戶。
當前用戶運行的console,可以使用當前用戶的網路共享。不等于System賬號就能使用該網路共享。
服務屬性,設定了當前administrator登錄的,還是一樣的錯。。。唉。。。
uj5u.com熱心網友回復:
你們說路徑不對的,告訴我,我這路徑哪里不對了,要咋寫。。。一個是其他服務器共享出來的,我本機能正常打開。一個是我配置的路徑。同樣的路徑,console可以運行,但是安裝成服務就報錯。情況就是這樣了。
這么看,是權限的問題了,
https://www.jianshu.com/p/8417cea3a122
這文章你看一下,有幫助。
uj5u.com熱心網友回復:
你們說路徑不對的,告訴我,我這路徑哪里不對了,要咋寫。。。一個是其他服務器共享出來的,我本機能正常打開。一個是我配置的路徑。同樣的路徑,console可以運行,但是安裝成服務就報錯。情況就是這樣了。
這么看,是權限的問題了,
https://www.jianshu.com/p/8417cea3a122
這文章你看一下,有幫助。
感謝,先看看文章。
uj5u.com熱心網友回復:
不建議這樣設計,Windows 服務運行在 system 帳戶,與你的桌面登錄帳戶不是同一個。你使用共享方式能訪問網路檔案,僅僅表示你可以使用當前桌面帳戶訪問,不代表 system 帳戶能訪問。服務是系統啟動后就可以自動運行的(不需要登錄桌面),不像桌面程式必須登錄才能運行(console命令列屬于桌面程式)。uj5u.com熱心網友回復:
不建議這樣設計,Windows 服務運行在 system 帳戶,與你的桌面登錄帳戶不是同一個。你使用共享方式能訪問網路檔案,僅僅表示你可以使用當前桌面帳戶訪問,不代表 system 帳戶能訪問。服務是系統啟動后就可以自動運行的(不需要登錄桌面),不像桌面程式必須登錄才能運行(console命令列屬于桌面程式)。
按照這個思路來看的話,只需要設定當前用戶去訪問就行了,對吧。
uj5u.com熱心網友回復:
不建議這樣做,會產生很多問題。服務先于桌面登錄啟動,此時網路連接尚未建立,無法訪問網路上的其他檔案。必須先手動登錄到桌面,然后再啟動服務(服務必須以桌面帳戶身份啟動),balabala......為什么必須用服務呢?用桌面程式不行嗎?
uj5u.com熱心網友回復:
不建議這樣做,會產生很多問題。服務先于桌面登錄啟動,此時網路連接尚未建立,無法訪問網路上的其他檔案。必須先手動登錄到桌面,然后再啟動服務(服務必須以桌面帳戶身份啟動),balabala......
為什么必須用服務呢?用桌面程式不行嗎?
怕有人不小心把程式關了,所以考慮用服務的呢。
uj5u.com熱心網友回復:
不建議這樣做,會產生很多問題。服務先于桌面登錄啟動,此時網路連接尚未建立,無法訪問網路上的其他檔案。必須先手動登錄到桌面,然后再啟動服務(服務必須以桌面帳戶身份啟動),balabala......
為什么必須用服務呢?用桌面程式不行嗎?
怕有人不小心把程式關了,所以考慮用服務的呢。
那可以考慮用windows的計劃任務自動啟用exe,在后臺運行的。
uj5u.com熱心網友回復:
怕有人關閉,就做成一個別人不可以隨意關閉的
uj5u.com熱心網友回復:
控制臺應用的打開方式是獨占一個服務端子,對于服務方軟體就是占用一個連接。你用服務連接,其資料占用程度是一個連接池,輕量級資料源肯定不允許這樣。接入資料庫,一般是以客戶機身份,你現在使用服務器身份、到底是你服務它還是它服務你?uj5u.com熱心網友回復:
提示沒有找到資料庫列印一下路徑,看看是否真的存在。
另外,網路路徑,在服務下不一定有網路權限,在console 可以找到,那是你已經登錄到了windows,并且了有了網路權限。
uj5u.com熱心網友回復:
資料庫嘛 簡單
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/76302.html
標籤:C#
