文章編號: 197964 - 上次校閱: 2006年5月18日 - 版次: 7.2

PRB:無法存取含有 FileSystemObject 的遠端檔案

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
本文曾發行於 CHT197964
重要:這份文件包含有關編輯 Metabase 的資訊。編輯 Metabase 之前,請先確認萬一發生問題時,您可以使用備份複本進行還原。如需有關如何執行這項操作的詳細資訊,請參閱 Microsoft Management Console (MMC) 中的「設定備份/還原」說明主題。
全部展開 | 全部摺疊

徵狀

當您透過 Active Server Pages (ASP) 存取含有 FileSystemObject 的遠端資源時,發生下列其中一個錯誤:
Microsoft VBScript 執行階段錯誤 '800a004c' 找不到路徑
Microsoft VBScript 執行階段錯誤 '800a0046' 權限遭拒
Server object error 'ASP 0177 :800a0046' Server.CreateObject Failed (伺服器物件錯誤 'ASP 0177 : 800a0046' Server.CreateObject 失敗)

解決方案

警告:不當編輯 Metabase 可能會導致嚴重的問題,甚至必須重新安裝使用 Metabase 的任何產品。Microsoft 不保證可以解決您不當編輯 Metabase 所導致的問題。請自行承擔編輯 Metabase 的一切風險。

注意:編輯 Metabase 之前,請務必將它備份起來。


請使用下列步驟解決此問題:
  1. 在遠端電腦上開啟 [網域使用者管理員],並建立名為 IUSR_ComputerName 的帳戶 (屬於 Web 伺服器)。將該帳戶設定為具有與 Web 伺服器上的 IUSR_ComputerName 相同的密碼。如果網站在獨立記憶體空間中執行,那麼您必須使用 IWAM_ComputerName 帳戶,而非 IUSR_ComputerName 帳戶。

    注意:如果您不知道 IUSR_ComputerName 的密碼,則必須為這個使用者指定新密碼。然後,您必須使用 [網域使用者管理員] 變更 Web 伺服器上 IUSR_ComputerName 帳戶的密碼。此外,您還必須使用命令列公用程式 Adsutil.vbs 變更 Metabase 中的密碼。如果要執行這項操作,請開啟命令提示字元,並將目錄切換至 Winnt\System32\Inetsrv\Adminsamples (適用於 Windows NT 4.0) 或 Inetpub\Adminscripts (適用於 Windows 2000)。接著,輸入下列內容,以變更 IUSR_ComputerName 帳戶的密碼:
    cscript adsutil.vbs set w3svc/anonymoususerpass "password"
    或者,輸入下列內容,以取得 IWAM_ComputerName 帳戶的密碼:

    adsutil.vbs get w3svc
    注意 如果您使用的是 Windows 2000 網域控制站或 Windows NT 4.0 網域主控站 (PDC),則必須使用網域帳戶,而非 IUSR_ComputerName 帳戶。您可能必須等候網域完成同步處理之後,才能使用該帳戶。
  2. 在遠端伺服器上建立名為 "files" 的共用,並將該共用的「讀取/寫入」權限指派給您剛剛建立的使用者。
  3. 使用 IIS 4.0 的「Internet 服務管理員」,將驗證方法變更為匿名存取,並將密碼與您在上一個步驟中建立的帳戶同步處理:
    • 開啟 [Internet 服務管理員]。
    • 用滑鼠右鍵按一下 Web 應用程式,並選取 [內容]
    • 選取 [目錄安全設定] 索引標籤。
    • 選取 [啟用匿名存取及驗證控制] 區段中的 [編輯]
    • 從顯示的對話方塊中,確定已選取 [允許匿名存取],然後按一下 [編輯]
    • 取消選取 [啟用自動密碼同步] 選項,並輸入使用者名稱 (IUSR_ComputerName) 及密碼。
  4. 在 Web 專案中建立 ASP 網頁以寫入文字檔,如下所示:
       <%
       Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
       Set MyFile =
       ScriptObject.OpenTextFile("\\<ComputerName>\files\myfile.txt", 8,true)
    
       MyFile.WriteLine "*** Write file test ***"
       Myfile.writeline "     file was written to at: " & Now
       Myfile.writeline " "
       MyFile.Close
       %>
  5. 儲存網頁並在瀏覽器中進行預覽。
  6. ASP 程式碼已成功在下列位置建立文字檔:
       \\<ComputerName>\files\myfile.txt.
    
    					

狀況說明

這是原本設計的作法。

其他相關資訊

進行驗證的使用者對於要存取的資源必須擁有適當的 NTFS 及共用使用權限。如果使用匿名存取,則進行驗證的使用者將會是 IUSR_ComputerName 帳戶。如果您必須使用已驗證的使用者來存取資源,則只能使用「基本驗證」。由於發生委派問題,所以「NTLM 驗證」及「Windows 整合式驗證」(Windows 2000) 無法存取遠端資源。如需詳細資訊,請參閱 Microsoft Developer Network (MSDN) 中的下列文件:
http://msdn.microsoft.com/workshop/server/feature/security.asp (http://msdn.microsoft.com/workshop/server/feature/security.asp)
在 Windows 2000 環境中,您可以為您的網站啟用委派並使用「Windows 整合式驗證」。如需有關在 Windows 2000 中使用委派的詳細資訊,請參閱 Microsoft Developer Network (MSDN) 中的下列文件:
http://msdn.microsoft.com/msdnmag/issues/0500/security/ (http://msdn.microsoft.com/msdnmag/issues/0500/security/)

?考

如需詳細資訊,請參閱「Microsoft 知識庫」中的下列文件:

189408? (http://support.microsoft.com/kb/189408/ ) FIX:ASP Fails to Access Network Files Under IIS 4.0 and IIS 5.0
276011? (http://support.microsoft.com/kb/276011/ ) PRB: Error 800a0035 When You Use the FileSystemObject Object

這篇文章中的資訊適用於:
  • Microsoft Active Server Pages 4.0
  • Microsoft Internet Information Server 3.0
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Services 5.0
關鍵字:?
kbbug kbcodesnippet kberrmsg kbfix kbfso kbiis500fix kboswin2000fix kbprb kbscript kbsecurity KB197964
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。