2010-05-04 109 views
1

我讀過許多論壇,因爲沒有用戶登錄,無法從服務訪問映射的驅動器。無法訪問映射驅動器的服務

問題1)我嘗試將我的服務作爲登錄進行 - 因爲某些帳戶和我的網絡驅動器映射在該帳戶中。該服務仍然無法訪問它。爲什麼?

問題2)從同一個服務中,我調用另一個進程。流程運行在哪個用戶帳戶下?

謝謝

回答

4

1)使用UNC路徑代替,那麼你不需要訪問映射的驅動器號。至於爲什麼即使在同一個帳戶中運行也無法訪問它們,因此很難確定沒有看到您的實際代碼。

2)這取決於你如何啓動過程。如果您使用ShellExecute()CreateProcess(),那麼它將在調用線程的用戶帳戶中運行。如果你使用CreateProcessAsUser()CreateProcessWithLogonW(),或CreateProcessWithTokenW(),那麼它運行在您在傳遞用戶帳戶。

+0

感謝您的快速回復雷米。 但是要求指出我們需要使用映射的驅動器而不是UNC路徑。我曾嘗試使用UNC路徑,它的工作正常。 關於2) - 我嘗試了以下場景: a)創建一個服務並以某個用戶身份運行。 b)從服務中調用一個進程。 (根據Remy的說法,這個過程應該在與服務相同的用戶環境中運行。) c)我仍然無法訪問映射驅動器。 。:(我的壞 需要幫助急需 感謝 – Rohit 2010-05-04 07:06:48

+0

忘了這個要求我已經看了許多人說,忽視了微軟禁止建議UNC路徑可以看到,即使IIS不支持映射驅動器,HTTP。: //support.microsoft.com/kb/257174 – 2010-05-04 07:26:42

+0

在UNC路徑上使用映射驅動器號沒有任何優勢,因爲無論如何都映射的驅動器號映射到UNC路徑,因此需要在這種情況下鬆開該需求 – 2010-05-04 18:43:45

0

服務並沒有獲得關於XP映射驅動器和超越,因爲映射驅動器是每個用戶的資源,所以他們取決於誰登錄。由於可能沒有人登錄,因此可能沒有映射驅動器。

您的服務可能會映射驅動器本身。

+0

但是,您可以將服務設置爲以用戶身份登錄。對? – Rohit 2010-05-04 08:56:52

+0

是的,但這並不意味着該服務可以訪問用戶帳戶的驅動器號映射。 MSDN甚至說了很多:http://support.microsoft.com/kb/180362 – 2010-05-04 18:51:55

+0

這不是嚴格的。如果您冒充登錄用戶,那麼您將能夠訪問其驅動器映射。不過,我認爲使用UNC路徑更直接。 – Luke 2010-05-04 21:21:55

1

我在服務模式下運行JBoss時遇到了類似的問題,即使在將「登錄爲:」選項更改爲映射到同一用戶後,即使執行服務,我的Java代碼也無法訪問映射驅動器駕駛。

然後我發現,如果我可以使用相同的服務映射驅動器,那麼它應該工作。

最後,在service.bat文件的頂部添加一個簡單的命令解決了這個問題。

net use x: \\SERVERNAME\SHARENAME 
+0

我遇到與TFSBuildServiceHost服務相同的問題。 – JohnZaj 2014-06-10 20:37:06

相關問題