2012-02-07 118 views
4

我寫了一個windows服務,它在本地驅動器(C:\ Testing文件夾)上創建一個文件。使用windows服務創建文件

我已經安裝了這項服務。我從IIS中託管的Web應用程序啓動此服務。

如果我硬編碼在服務代碼這條路,服務工作正常,但如果我通過Web應用程序的Web服務通過的路徑,事件日誌顯示的excepetion

服務無法啓動。 System.UnauthorizedAccessException:訪問路徑'C:\ Testing'被拒絕。

我在我的機器上具有管理員權限,我使用相同的帳戶啓動該服務。我怎樣才能擺脫這種異常?

+0

您必須爲LOCAL SERVICE用戶帳戶的測試文件夾(或您服務運行的任何用戶帳戶)添加寫入權限。 – qJake 2012-02-07 21:34:25

+0

或者使用一個通常已經配置好的文件夾供所有人使用,例如Temp – 2012-02-07 21:38:59

+1

如何在Web應用程序和Windows服務之間進行通信?您確定它是訪問該路徑的服務,而不是使用服務代碼的Web應用程序? – 2012-02-07 21:43:01

回答

4

我犯了一個愚蠢的錯誤。我需要提供文件名以及路徑。它的工作現在很好。感謝您的回覆

12

正如SpikeX說,你的服務需要有到文件夾C讀寫訪問:\測試

的文件夾上單擊鼠標右鍵,並更改安全權限。 「本地服務」爲本地系統帳戶:

enter image description here

,或者如果你的服務的特定帳戶(例如,您自己的Windows管理員帳戶)下運行,給予該帳戶寫入權限的文件夾。

在SERVICES.MSC服務安全標籤:

enter image description here

0

你可以嘗試使用像Process Monitor東西來驗證哪個帳戶試圖寫入C:\測試。這可能是您所期望的帳戶以外的帳戶正在嘗試創建該文件。

-1

當您在本地系統上映射驅動器時,在這種情況下,您應該爲您通過Windows服務訪問的共享文件夾提供網絡服務的權限。

+0

真的不太清楚你的意思。 – IgnazioC 2015-08-04 06:21:27