.NET Directory.Exists 在以管理員身份執行時否認存在映射的網路驅動器
我正在 Windows 7 上編寫一個小型 .NET 程序。它需要做的一件事是創建符號連結,這似乎需要我擁有管理員權限。它還需要能夠使用映射的網路驅動器(例如,R:\,它在我的系統上映射到
\\titanium\Private\)。我
Directory.Exists(path)用來驗證路徑是否存在。當以普通使用者(管理員帳戶,但不是“以管理員”身份)執行程序時,這在映射的網路驅動器上執行良好。
以管理員身份(使用 UAC)執行程序時,找不到存在的目錄。結果,程序拒絕承認這
R:\Steam Games\是一個實際存在的目錄。我有點困惑為什麼會這樣。使用完整的 UNC 路徑 (
\\titanium\Private\Steam Games\) 也不起作用。有沒有人遇到過這個?有什麼好的解決方法嗎?我是否必須將路徑格式化為不同的(注意:它們中的大多數目前都是用 格式化的
Path.Combine,所以它們應該是正確的)。謝謝你的幫助。
(例如,
Directory.Exists(@"R:\Steam Games\")以管理員身份執行時返回 false,但該文件夾存在。函式呼叫在定期執行時正確返回 true)。編輯:問題確實似乎是管理員在技術上是不同的使用者帳戶。我什至不能使用 UNC 路徑,因為我只在我的普通使用者下登錄到我的文件伺服器,而不是在“管理員”下。作為一種(相對駭人聽聞的)解決方法,我只是以正常權限執行我的程序,然後使用
Process.Start參數呼叫 cmd.exe 的實例以創建符號連結(以及動詞“runas”以獲取 UAC 提示)。
Windows 中的映射驅動器與使用者上下文相關聯。映射到帳戶的驅動器:使用者 A,使用者 B 將無法訪問。不過,您可以在不同的使用者下創建映射到相同驅動器號的相同 unc 路徑。
不過,使用完整的 unc 路徑應該可以。
更多資訊,請訪問support.microsoft.com:1、2。
它不起作用的基本原因是IIS使用者沒有訪問路徑的權限。以普通使用者身份執行時,授予使用者訪問權限,即要使其正常工作,您需要授予 IIS 文件夾的權限,如下所示,UNC 路徑可以在 iis 執行的服務中工作:
屬性–> 安全性–> 編輯–> 添加–> IIS_WPG