如果開啟 UAC,將檔案從對應的磁碟驅動器複製到本機目錄失敗,併發生錯誤(無法使用位置)
本文說明 當您嘗試從對應的磁碟驅動器複製檔案時,位置無法使用 錯誤。
原始 KB 編號: 2019185
徵兆
開啟使用者帳戶控制 (UAC) 後,當您嘗試將檔案從對應的磁碟驅動器複製到本機目錄時,可能會收到下列錯誤:
無法使用位置
<對應的驅動器號>\ 是指無法使用的位置。 它可以位於這部電腦的硬碟或網路上。 請檢查以確定磁碟已正確插入,或您已連線到因特網或網路,然後再試一次。 如果仍然無法找到,則資訊可能已移至不同的位置。
原因
根本原因是UAC和與分割令牌的互動。 當系統管理員登入已啟用系統管理員核准模式 (AAM) 的電腦時,系統會將使用者授與兩個存取令牌:
- 完整系統管理員存取令牌
- 篩選的標準使用者存取令牌
根據預設,當本機 Administrators 群組的成員登入時,系統管理 Windows 許可權會停用並移除提高的用戶權力。 這會導致標準使用者存取令牌。 接著會使用標準使用者存取令牌來啟動桌面 (Explorer.exe)。 Explorer.exe 是父系處理程序,所有其他使用者啟動的處理程序都會繼承其存取權杖。 因此,除非使用者提供同意或認證來核准應用程式以使用完整系統管理存取令牌,否則所有應用程式默認都會以標準使用者身分執行。 相較於此程式,當標準使用者登入時,只會建立標準使用者存取令牌。 接著會使用此標準使用者存取令牌來啟動桌面。
必須符合下列條件,才能發生錯誤:
- 使用 AAM 啟用 UAC。
- 使用者未以本機計算機的系統管理員身分登入,或以網域系統管理員帳戶認證登入。
- 磁碟驅動器會使用標準使用者安全性內容進行對應。
- 用戶沒有目標目錄的建立/寫入NTFS許可權。
使用者已在 Windows 檔案總管中使用 [對應網路驅動器機] 選項,或在未提升許可權的命令提示字元中執行 net use
命令,來對應磁碟驅動器。 從未提升許可權的命令提示字元中,以標準使用者身分執行 net use,即可看到對應的磁碟驅動器。 在此情況下,磁碟驅動器已對應為標準使用者。
C:\Users\johnsmith>net use
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
OK X: [\\contoso-dc1\d$](file://contoso-dc1/d$) Microsoft Windows Network
The command completed successfully.
在提升許可權的命令提示字元中執行相同的命令,不會列出任何對應的磁碟驅動器。
C:\Windows\system32>net use
New connections will be remembered.
There are no entries in the list.
它清楚地顯示提升許可權的會話不會看到標準用戶的對應磁碟驅動器。 因此,它無法完成複製作業。 這是依照設計的行為。
注意
根據預設,AAM 會針對屬於本機 Administrators 群組成員的帳戶啟用。 您可以在 [本機原則] 的 [安全性選項] 節點中找到此設定,在 [安全性設定] 下,可以使用 [本地組原則編輯器] (secpol.msc) 和組策略管理控制台 (GPMC) (gpedit.msc) 進行設定。 如需UAC的詳細資訊,請參閱 用戶帳戶控制。
解決方法
使用提升許可權的程序對應磁碟驅動器。 但 Windows 檔案總管不會看到提升許可權的磁碟驅動器對應。 如需詳細資訊,請參閱 詳細資訊 一節。
使用 UNC 路徑連線到網路資源,例如 \\server\share。
使用組策略喜好設定來對應磁碟驅動器。 以下參考的白皮書介紹組策略喜好設定,這是 Windows Server 2008 的新功能。 白皮書說明如何使用組策略喜好設定,更妥善地部署和管理操作系統和應用程式設定。 組策略喜好設定可讓您設定、部署及管理先前無法使用組策略管理的作業系統和應用程式設定。 範例包括對應的磁碟驅動器、排程的工作,以及 [開始] 功能表 設定。 對於許多類型的作業系統和應用程式設定,使用組策略喜好設定,是使用Windows映像或使用登入腳本進行設定的更好替代方案。
使用 launchapp.wsf 腳本來使用工作排程器來排程命令的登入腳本對應磁碟驅動器。 下列文件可協助您排序 Windows Vista 中可用的新功能和更新功能。 它也提供許多最佳做法來協助您部署組策略。
下列文章說明設定登錄值來還原稍早
EnableLinkedConnections
所述的安全性變更不受支援的方法。 此值可讓 Windows Vista 在篩選的存取令牌與 Administrators 群組成員的完整系統管理員存取令牌之間共用網路連線。 設定此登錄值之後,如果網路資源對應至存取令牌,LSA 會檢查另一個存取令牌是否與目前的用戶會話相關聯。 如果 LSA 判斷有連結存取令牌,則會將網路共用新增至連結位置。
其他相關資訊
當系統管理使用者登入時,Windows 會使用提升許可權的令牌來處理登入腳本。 腳本實際上可運作並對應磁碟驅動器。 不過,Windows 會封鎖對應網路驅動器機的檢視,因為桌面使用篩選的令牌,而磁碟驅動器則使用提升許可權的(系統管理員)令牌進行對應。
在 Windows 2000 SP2 之前,裝置名稱(例如,對應磁碟驅動器)會保持全域可見狀態,直到明確移除或系統重新啟動為止。 基於安全性考慮,我們已從 Windows 2000 SP2 開始修改此行為。 從此開始,所有裝置都會與驗證標識碼 (LUID) 相關聯。 LUID 是針對每個登入會話所產生的標識碼。 在 LocalSystem 內容中執行的進程可以在全域裝置命名空間中建立裝置名稱,不過本機命名空間物件可以隱藏全域命名空間物件。
這些對應的磁碟驅動器會與 LUID 相關聯。 提升許可權的應用程式會使用不同的 LUID 在個別的登入事件期間產生。 因此,提升許可權的應用程式將不再看到此使用者的任何對應磁碟驅動器。 您將會注意到先前使用 RunAs
或 CreateProcessAsUser
API 的相同行為,但 UAC 會大幅增加將使用這些概念的用戶數目。
結果是,如果您提高命令提示字元,就不會再看到從原始登入建立的任何本機命名空間對應磁碟驅動器(無論是透過登入腳本建立,還是使用 WNetAddConnection
API,否則為 )。 從 Windows 檔案總管啟動的案例有緩和措施。 如果您按兩下偵測到為安裝檔案的可執行檔,或顯示為 requireAdministrator,Windows 可以偵測到它已提升,而且有錯誤指出找不到路徑,並從原始 LUID 複製該磁碟驅動器對應。 不過,這是唯一自動化的案例。