Windows

net use 遇到“系統錯誤 67 已發生”。嘗試從作為服務執行的腳本映射時

  • January 30, 2015

我在 windows Server 2008 R2 上執行了一項服務,它需要訪問 webdav 映射驅動器,以復製文件依賴項。當我從命令提示符執行 net use 時,一切正常:

淨使用z:https ://domain.com/webdav /user:thisuser passwd

或從命令提示符執行我的腳本,一個 ant 建構腳本:

<target name="mapdrive.developer" depends="checkmappeddrive" unless="mapped.drive.present">
   <antcall target="disconnect.mapped.drive" />
   <echo message="Mapping drive..." />
   <exec executable="net">
       <arg value="use" />
       <arg value="z:" />
       <arg value="https://test.com/plugins/servlet/confluence/default" />
       <arg value="/PERSISTENT:YES" />
       <arg value="/USER:xxxxx" />
       <arg value="xxxxx" />
   </exec>
</target>

是的,它是一個 SSL/HTTPS webdav 地圖。我知道系統資料庫中的系統設置並安裝了 WebClient,“桌面體驗”。登錄並從命令提示符執行時一切正常。但是,如果我使用此腳本並從作為本地系統帳戶執行的建構服務中生成腳本,則該命令將失敗並顯示錯誤:“系統錯誤 67 已發生。”。我嘗試啟用“允許服務與桌面互動”並將“登錄身份”設置更改為正常使用者。都沒有奏效。我已經搜尋並發現了與成功映射驅動器作為使用者的人類似的問題,但是當從腳本作為服務、本地系統帳戶執行時失敗。我找不到的是一種解決方法,如果有的話。

有人在這裡找到一個可行的解決方案嗎?非常感謝任何資訊。

弄清楚了。您必須使用 UNC 路徑從遠端源複製並作為本地服務執行。顯然,這是在stackoverflow上回答的:

來自http://msdn.microsoft.com/en-us/library/ms685143.aspx

必須訪問遠端資源的服務(或在不同安全上下文中執行的任何程序)應使用通用命名約定 (UNC) 名稱來訪問資源。服務必須具有適當的權限才能訪問資源。如果伺服器端服務使用 RPC 連接,則必須在遠端伺服器上啟用委派。

驅動器號對系統來說不是全域的。每個登錄會話都會收到自己的一組從 A 到 Z 的驅動器號。因此,重定向的驅動器不能在不同使用者帳戶下執行的程序之間共享。此外,服務(或在其自己的登錄會話中執行的任何程序)無法訪問在不同登錄會話中建立的驅動器號。

服務不應通過映射驅動器號直接訪問本地或網路資源,也不應在執行時呼叫 net use 命令映射驅動器號。

驅動器號不起作用。因此,如果您要從 wedav/https 處理文件,並啟用 ssl,則必須使用 UNC 映射源:

淨使用https://test.net/plugins/servlet/confluence/default /user:user passwd

然後,當您執行 ’net use’ 時,您將看到以下內容:

C:\Users\Administrator\test>net use
New connections will be remembered.


Status       Local     Remote                    Network

-------------------------------------------------------------------------------
                      \\test.net@SSL\plugins\servlet\conf
luence\default
                                               Web Client Network
The command completed successfully.

我使用 robo copy 從 UNC 複製:

robocopy \\test.ney@SSL\plugins\servlet\confluence\default . /z /e

引用自:https://serverfault.com/questions/663724