Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

解決 127.0.0.1 無法存取與 0x800A0046 GetObject 權限錯誤完整指南

編輯:關於伺服器

在本機調試 ASP 網站時,常遇到 https://localhost、https://電腦名稱 正常,唯獨 https://127.0.0.1 彈出驗證視窗或拋出 Microsoft VBScript 執行階段錯誤 0x800A0046:權限不足 'GetObject'。本文從根因分析到徹底解決,一次釐清。

現象分類

情境症狀
新裝 IIS 測試預設頁localhost 正常,127.0.0.1 要求帳密
建立虛擬目錄後localhost/虛擬目錄 正常,127.0.0.1/虛擬目錄 401 或 500
啟用匿名存取後127.0.0.1 不再要密碼,但 localhost 跳 0x800A0046

核心原因

  1. 預設網站「目錄安全性」未啟用匿名存取 → 127.0.0.1 觸發 NT 挑戰/回應驗證。
  2. 預設文件 iisstart.asp、localstart.asp 使用 GetObject("IIS://LocalHost/W3SVC/1/ROOT") 讀取 IIS 中繼資料庫,需呼叫端具備「系統管理員」或「IIS_ADMIN」權限。預設匿名帳戶 IUSR_機器名 僅屬 Guests 群組,權限不足導致 0x800A0046。

分步解決方案(建議順序執行)

步驟 1:啟用網站層級匿名存取

  1. IIS 管理員 → 「預設網站」右鍵 →「內容」→「目錄安全性」→「驗證與存取控制」→「編輯」
  2. 勾選 啟用匿名存取,帳戶保持預設 IUSR_機器名 → 確定

此時虛擬目錄與 127.0.0.1 免密可進,但 localhost 會噴 0x800A0046。

步驟 2:單獨對兩支預設 ASP 關閉匿名存取(關鍵)

  1. IIS 管理員展開「預設網站」→ 找到 iisstart.asp 與 localstart.asp
  2. 各自右鍵 →「內容」→「檔案安全性」→「驗證與存取控制」→「編輯」
  3. 取消勾選「啟用匿名存取」 → 確定

原理:強制這兩支頁面改用整合式/NTLM 驗證,由登入使用者的高權限 Token 執行 GetObject,繞過匿名帳戶限制。

步驟 3:若仍失敗,將匿名帳戶升級為管理員帳戶(終極方案)

  1. 同步驟 1 進入「編輯」→「瀏覽」→「進階」→「立即尋找」
  2. 選擇本機管理員帳戶(如 Administrator 或您的登入帳號) → 確定
  3. 回到「驗證方法」對話框,勾選「繼承覆蓋」並套用至 iisstart.asp、localstart.asp

此舉讓所有匿名請求以管理員身分執行,徹底解決權限問題,但僅限開發/測試環境,生產環境嚴禁使用。

原理解析:IUSR_機器名 是什麼?

  • 全名:IUSR_<ComputerName>
  • 類型:內建「Internet 來賓帳戶」,隸屬 Guests 群組
  • 權限:極低,無法存取 IIS 中繼資料庫、登錄表機碼、系統資源
  • 密碼:由 IIS 自動管理、定期輪換

最佳實踐總結

環境建議設定
開發/測試機步驟 1 + 步驟 3(匿名帳戶改管理員),最省事
預演/Stage 環境步驟 1 + 步驟 2,保留最小權限原則
生產環境停用預設網站、刪除 iisstart.asp/localstart.asp、獨立應用程式集區搭配自訂身分識別
Copyright © Windows教程網 All Rights Reserved