題 權限被拒絕本地管理員帳戶下的服務


我有一個應該通過網絡複製一些文件的服務,該服務在一個本地管理員帳戶下運行。

以該管理員身份登錄,我可以手動將文件從網絡複製到特定文件夾下 Program Files,但該服務存在寫入文件的PermissionDenied異常。我也確信文件在寫入之前沒有被鎖定。

錯誤如下:

訪問路徑“... / SomeAssembly.dll”被拒絕。

為什麼服務給我這樣的錯誤,我該如何糾正? (我也開發了這項服務,因此可以對組件進行更改)。


更新

我也嘗試過運行它 System 但它無法讀取網絡上的文件(dunno為什麼) LocalService 和 NetworkService 帳戶AFAIK沒有足夠的權限來更改ProgramFiles ...是嗎?


更新2

我不能用的原因 System 是因為該帳戶無法通過設計訪問網絡資源,因此也是如此 NETWORK SERVICE 無權訪問本地資源。管理員帳戶的問題似乎是Windows在服務執行時阻止了文件複製操作。

有任何想法嗎????


5
2017-08-26 15:21


起源




答案:


首先,我要檢查是否有任何文件被標記為“只讀”,因為我已經看到這個屬性有時會取代NTFS權限。我已經看過你可以復制gui文件的情況,點擊是“你確定嗎?”提示,但是任何使用程序向其寫入數據的嘗試都會立即失敗,沒有給出提示。

此外,我還要確保服務和相關服務實際上在您認為的帳戶下運行。我見過一些服務A會調用服務B執行某項任務然後將結果交回服務A以完成任務的情況。如果只有Service An使用具有適當權限的帳戶,那麼嘗試將失敗(因為即使An正在調用B,它也不會強制它作為同一用戶An運行,如果B本身不配置為使用正確的用戶,它將使用默認的用戶可能無法訪問您想要的特定地點

如果可能的話,確保它使用的路徑是什麼樣的路徑 c:\program files\SomeAssembly.dll\somefile.txt 或類似的東西 C:/users/don/app/SomeAssembly.dll 也可能會出錯。


1
2017-12-26 19:08





最後我做的是讓應用程序將文件從遠程資源複製到低限製文件夾(Application Data 如果我沒記錯的話)然後調用服務,運行下 System,將它們複製到 Program Files

這種方法的優點是它不需要管理權限就可以通過網絡將文件複製到本地驅動器(只要你有權利) read 當然,對網絡文件的權限)然後它也利用了對其施加的低限制 System 寫入Program Files。


0
2017-12-27 02:02





根據其他計算機的運行情況,服務通常在網絡服務帳戶或本地系統帳戶下運行。

我先嘗試一下。


-1
2017-08-26 17:06



我認為你正在準備殺死這項服務或其他什麼? - avirk
您始終可以配置運行該服務的帳戶。我的這兩個都沒有運行,而是在我創建的管理員帳戶下,我確信它有足夠的權限來執行任務。 - PedroC88