2011-11-24 61 views
1

我有一個執行.bat文件的Windows服務。該.bat文件執行一些讀取某些文件信息的Sava代碼。我需要訪問的文件不在服務運行的同一臺計算機上。所以我應該使用像G:\這樣的映射來訪問它們。使用Windows服務在Windows上遠程訪問文件

即使我在運行服務時存在G:\上的文件,文件exists()和文件canRead()始終返回false。

如果手動執行.bat,一切正常,但我需要使用服務執行它。

該服務正在與有權讀取此G:\映射上的所有文件的用戶一起運行。

有沒有人有什麼可能是錯的線索?爲什麼在作爲Windows服務運行時無法訪問這些遠程文件?

有問題的操作系統是Windows XP

+1

嘗試執行「\\ servername \ c $ \ path_to_bat_file」,其中c是遠程計算機上的驅動器,當然必須替換爲bat文件所在驅動器的名稱(無映射) 。當然,這是假定所有訪問權利都已到位。 servername是您用來映射驅動器的東西。 – Thomas

回答

0

問題通常是運行該服務的用戶不具有相同的G:驅動器以及相同的訪問權限。

我建議您以運行該服務的用戶身份登錄並查看該用戶所看到的內容。

+0

運行服務的用戶與我手動執行.bat時登錄的用戶相同。但是如果我在登錄時運行該服務,則會遇到同樣的問題。雖然,我可以通過瀏覽器訪問G:驅動器 –

+0

您可以使用UNC路徑嗎? –

+0

我試過了,但沒有奏效@Peter Lawrey –

0

驅動器映射不會在會話之間共享,並且服務會話不會像交互式會話那樣自動重新建立驅動器映射。您應該在批處理文件中放入net use命令,以在服務會話中明確建立驅動器映射。

相關問題