2010-05-21 125 views
6

我在ColdFusion中訪問映射的驅動器時遇到問題。我有\\server\files\sharing映射到z:\。如果我運行這段代碼,它說的目錄中存在的完整路徑,而不是映射的一個:從ColdFusion訪問映射的網絡驅動器

<cfscript> 
    fullPath = "\\server\files\sharing\reports"; 
    mappedPath = "z:\reports"; 

    WriteOutput("fullPath exists: #DirectoryExists(fullPath)#<br/>"); //YES 
    WriteOutput("mappedPath exists: #DirectoryExists(mappedPath)#"); //NO 
</cfscript> 

我做了一些谷歌搜索,發現有幾個人有同樣的問題,但解決的辦法總是使用完整路徑。 ColdFusion無法看到或訪問映射驅動器的原因是什麼?如果是這樣,是否有任何解決方法(可能是系統調用來獲取映射驅動器的完整路徑)?

+0

在哪個用戶下運行ColdFusion服務? – ale 2010-05-21 20:59:48

+0

@AlEverett:它作爲系統服務運行。任務管理器將其顯示爲「SYSTEM」 – Kip 2010-05-21 21:08:48

+2

這可能是問題所在。幾乎所有使用CF和訪問驅動器的麻煩都是因爲「SYSTEM」對驅動器資源的訪問非常有限。您需要讓它作爲有權訪問該驅動器/目錄的用戶運行。 – ale 2010-05-21 21:22:51

回答

5

ColdFusion無法訪問映射驅動器的原因是因爲它在Windows中作爲服務運行。

服務(或任何過程,是 在不同的安全 上下文中運行)必須訪問遠程 資源應使用通用 命名約定(UNC)名稱訪問 資源。

這從以下知識庫文章拉到: http://support.microsoft.com/kb/180362

您可以改變服務爲具有映射驅動器的個人用戶運行的(我還沒如果檢查工程,但它可能),但你應該使用UNC路徑,而不是映射的驅動器。