標籤:blog http 使用 檔案 os 2014
最近為實現共用目錄之間的檔案同步,開發了一個Windows Service。
考慮到在拷貝過程中,如果網路忽然抽風訪問不了,導致檔案拷貝不完整的情況,果斷拋棄.Net 內建的 COPY 方法,而使用DOS命令下的XCOPY命令。
嗯。。。。。說幹就幹。。。
XCOPY方案驗證、開發、調試(在自個電腦上建了兩個共用目錄)。。。。半天時間,全部搞定。貌似事情進展的太順利了。。。。。
既然本地調試沒問題,那就部署到測試環境上吧。好吧。。。問題來了。
同步兩個共用目錄,居然失敗!查看日誌,XCOPY的退出碼 ExitCode=4,也就是說路徑不正確。
奇怪。。。。沒理由啊。。。。。。。。在測試伺服器上,用 \\IP\\ShareFolder 的方式,都是可以訪問的,並且能夠正常讀寫。
把剛才同步失敗的XCOPY命令在CMD視窗中運行,居然成功了。。。。。。
看到這估計你也想到了,Windows Service在訪問共用的時候,是沒有許可權的。
Google。。。。。Google。。。。。。。找到加許可權的辦法。
參考連結:http://stackoverflow.com/questions/9905281/how-to-access-to-a-shared-resource-with-a-windows-service-using-local-system-use
步驟如下:
1)首先找到具有共用目錄讀寫權限的使用者
2)在Windows Service的屬性中,選擇“登入”選項卡,在“此使用者” 下,給一個有共用目錄讀寫權限的使用者。
3)點擊確定,重新啟動服務。
好了,懷著一個激動的心,重新啟動,重新同步,繼續失敗。。。。。。。。。。。。。OH,漏!!!!!!!!!!!!!!
不是說給服務加一個使用者就可以了麼。。。。。。騙紙。。。。。。。。。
繼續Google。。。Google。。。。Google。。。。。。。。。。。。。。。。。。
不得不說,Stackoverflow上面大牛就是多。。。
使用 NET USE 命令 建立與共用的連結
用法 :Net Use \\ServerIP\\ShareFolder Password /USER:User
廢話不多說,趕緊試一下。。。。。
命令成功完成。。。。懷著激動的心情,重新啟動一下服務。。。。。同步成功!!!