簡體   English   中英

Windows 服務無法訪問。網絡位置 (UNC) 路徑

[英]Windows Service cannot access network location (UNC) Path

我有一個 windows 服務,它不斷地為新文件輪詢一個文件夾。對於本地目錄,這工作正常。但是當涉及到同一網絡中另一個系統上的 UNC 路徑時,該服務似乎無法訪問該文件夾。我已經提到這篇文章https://serverfault.com/a/881272 ; 它指出我需要以當前登錄的用戶身份運行該服務。我該怎么做?

我希望使用該服務監控的路徑是

\DESKTOP-PC\Users\me\myfolder

請指教

更新:

我已經使用 topshelf 開發了該服務。我想輪詢同一網絡中另一台本地計算機上的文件夾。我 go 到.network places,雙擊計算機名,它要求提供憑據,我輸入的用戶名和密碼遠程計算機我可以為該用戶訪問系統上的文件(在資源管理器中)。

現在,當我將服務設置為在這台機器下以本地機器用戶身份運行時,它無法訪問可以使用資源管理器訪問的遠程 UNC 路徑。我嘗試以遠程機器用戶身份安裝它,但它失敗了。

myService.exe install -username:DESKTOP-REMOTE\myname -password:mypassword
  1. 在Windows服務器上打開“控制面板”>“管理工具”>“服務”窗口。
  2. 停止你的Windows服務。
  3. 打開“屬性”>“登錄”對話框。
  4. 將服務用戶帳戶更改為目標用戶帳戶。
  5. 開始你的服務。

在此輸入圖像描述

如果您正在Visual Studio中開發該服務,並且想要模擬其他帳戶,您還可以按shift +右鍵單擊devenv.exe並單擊“以不同用戶身份運行”。

還要確保指定文件夾的完整路徑,並確保您使用的帳戶具有該文件夾的完全權限。

如果您嘗試在desktop-remote\\myname帳戶下運行服務,則可能會失敗。 本地機器只喜歡屬於自己的帳戶。

我要做的就是轉過身來。 使遠程計算機共享一個文件夾供您的計算機輪詢。 這樣,遠程機器就可以控制它發布的數據,就像對象的privatepublic屬性一樣。 如果你沒有知道地址\\\\desktop-remote\\my-not-so-secret-folder\\能夠讀取它的人,那么設置它以便任何人都可以閱讀。 如果你更隱秘,請將文件夾后綴為$ like: \\\\desktop-remote\\my-secret-folder$ 現在它不是可見但仍然可以到達。
您還可以創建一個可以訪問所述文件夾的特殊帳戶。

然后,您可以讓您的服務在您的本地計算機上運行您選擇的任何帳戶(具有網絡訪問權限)。 讓它嘗試使用特殊帳戶連接到遠程文件夾。

(我學到了很難的方法,讀取共享文件夾在域中沒有域和機器的機器之間略有不同;任何人都可以讀取不起作用。至少在WindowsXP中就是這樣。從那時起我就一直這樣。不需要共享文件夾。)

HTH

我在 Azure 雲中的 UNC 存儲遇到了這個問題。 有效的是在 windows 憑據管理器中設置憑據:

windows 憑證管理員

您可以從 Azure 門戶獲取連接字符串。

這解決了我們的問題。

將服務設置為以本地系統帳戶運行時,它無法訪問使用本地計算機帳戶的資源管理器可訪問的遠程UNC路徑。

只是因為資源管理器管理登錄的用戶憑據,因此,您只將UNC路徑憑據添加到LOGGED用戶。

將其更改為本地系統帳戶時,不會存儲共享的用戶憑據。

嘗試創建沒有密碼過期的本地用戶,然后啟用它訪問共享。

您需要做的就是在注冊這個新帳戶的情況下設置Windows服務。

安全

你可以看一下模擬。 此外,如果服務作為本地用戶運行,則有助於在文件夾所在的計算機上創建具有類似密碼的同一用戶。

看看這里(這篇文章中的OP遇到了同樣的問題,並且他/她已經給出了共享文件夾“Everyone訪問完全控制”。

https://serverfault.com/questions/177139/windows-service-cant-access-network-share

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM