Microsoft 已發行一的 Microsoft 安全性摘要報告有關 IT 專業人員這個問題。安全性摘要報告包含其他與安全性相關的資訊。若要欲安全性摘要報告請造訪下列 Microsoft 網站]:
如果要解決這個問題,使用下列其中一種方法。
附註您必須執行命令以系統管理員身分本文所述。在 Windows Vista 及 Windows Server 2008,您必須從已提高權限的命令提示字元執行命令。若要開啟 [提高權限的命令提示字元,請依照下列步驟執行:
- 按一下 [開始]、 在的搜尋方塊中輸入 cmd,並按下 ENTER。
- 結果] 清單中 cmd,] 上按一下滑鼠右鍵,然後按一下 [以系統管理員身分執行]。
方法 1: 使用較少的應用程式停用 OLEDB32.dll 一個系統存取控制清單 (SACL)
這項因應措施類似"使用 SACL 項目,以停用 OLEDB32.dll"本文稍後說明的因應措施。此因應措施就是關於在存取 OLEDB32.DLL 封鎖哪些應用程式更具選擇性。Internet Explorer 仍然會被封鎖。不過,大多數其他應用程式不會。這有保護不受攻擊的 Internet Explorer 的好處。但是,它仍可讓依賴 OLEDB32.DLL 正常運作的其他應用程式。
為了這種選擇性保護這項因應措施依賴 Internet Explorer 會使用預設開啟受保護模式執行的事實。這表示低整合性層級執行 iexplore.exe 處理序。 如需有關這表示和其運作方式的詳細資訊,請造訪下列 Microsoft 網頁:
完整性機制可讓區塊的處理程序從撰寫安全物件 (例如具有較高的完整性層級的檔案。它會將特殊的完整性階層項目套用至物件的 SACL。
附註另外,也可以封鎖處理程序無法讀取或執行安全物件上一層的完整性。
如何使用這項因應措施
備忘稿- 這項因應措施只適用於 Windows Vista 及之後的版本的 Windows。
- 若要將這項因應措施 Internet Explorer 必須執行與受保護模式開啟。這需要啟用受保護模式及使用者帳戶控制 (UAC)。這是預設設定。若要判斷是否已啟用受保護模式,檢查 Internet Explorer 狀態列。
若要將這項因應措施請依照下列步驟執行:
- 將下列文字儲存到暫存資料夾:
- 為 32 位元系統
將下列文字儲存到名為 BlockAccess_x86.inf 」 的文字檔案: [Unicode]
Unicode=yes
[Version]
signature="$CHICAGO$"
Revision=1
[File Security]
"%ProgramFiles%\Common Files\System\Ole DB\oledb32.dll",2,"S:(ML;;NWNRNX;;;ME)"
- 針對 64 位元的系統
將下列文字儲存到名為 BlockAccess_x86.inf 」 的文字檔案: [Unicode]
Unicode=yes
[Version]
signature="$CHICAGO$"
Revision=1
[File Security]
"%ProgramFiles%\Common Files\System\Ole DB\oledb32.dll",2,"S:(ML;;NWNRNX;;;ME)"
將下列文字存到名為 BlockAccess_x64.inf 」 的文字檔: [Unicode]
Unicode=yes
[Version]
signature="$CHICAGO$"
Revision=1
[File Security]
"%ProgramFiles%\Common Files\System\Ole DB\oledb32.dll",2,"S:(ML;;NWNRNX;;;ME)"
- 開啟 [暫存資料夾中的 [提高權限的系統管理員命令提示字元]。
- 在命令提示字元中,請輸入下列指令,並按下 ENTER:
secedit/設定/db BlockAccess.sdb/cfg < inf 檔 >
- 命令完成之後,您應該會收到類似下列的訊息:
工作已順利完成。
請參閱 %windir%\Security\Logs\Scesrv.log 檔的詳細資訊。
如何驗證這項因應措施
您可以使用
icacls 命令以判斷是否已套用因應措施。如果要執行此動作使用下列其中:
- 為 32 位元作業系統
在命令提示字元中,請輸入下列指令,並按下 ENTER: icacls %ProgramFiles%\Common Files\System\Ole DB\oledb32.dll"
- 針對 64 位元作業系統
在命令提示字元下輸入下列命令,,然後按下 ENTER: icacls %ProgramFiles%\Common Files\System\Ole DB\oledb32.dll"
icacls"%ProgramFiles (x86) %\Common Files\System\Ole DB\oledb32.dll",2,"S:(ML;;NWNRNX;;;ME)"
每當您執行
icacls] 命令,搜尋下面這一行的輸出。
強制 Label\Medium 強制 level:(NW,NR,NX)
若該行存在,且包含 NR 和 NX 值,成功已經套用因應措施。不過,如果任一行遺漏或其中一個 NR 或 NX 值是遺失,因應措施未成功地套用。
這項因應措施的影響
這項因應措施影響只 ADO/OLE DB 執行的應用程式在 Internet Explorer 中。這並不常見。這項因應措施會有影響最小,因為所有其他會在使用中] 或更高的完整性層級執行的處理序仍然能夠載入和使用 OLEDB32.dll。
如何復原這項因應措施
若要復原因應措施,請依照下列步驟執行:
- 將下列文字儲存到暫存資料夾:
- 為 32 位元系統
將下列文字儲存到名為 unBlockAccess_x86.inf 」 的文字檔案: [Unicode]
Unicode=yes
[Version]
signature="$CHICAGO$"
Revision=1
[File Security]
"%ProgramFiles%\Common Files\System\Ole DB\oledb32.dll",2,"S:(ML;;NW;;;ME)"
- 針對 64 位元的系統
將下列文字儲存到名為 unBlockAccess_x86.inf 」 的文字檔案: [Unicode]
Unicode=yes
[Version]
signature="$CHICAGO$"
Revision=1
[File Security]
"%ProgramFiles%\Common Files\System\Ole DB\oledb32.dll",2,"S:(ML;;NW;;;ME)"
將下列文字存到名為的文字檔: unBlockAccess_x64.inf": [Unicode]
Unicode=yes
[Version]
signature="$CHICAGO$"
Revision=1
[File Security]
"%ProgramFiles%\Common Files\System\Ole DB\oledb32.dll",2,"S:(ML;;NW;;;ME)"
- 開啟 [暫存資料夾中的 [提高權限的系統管理員命令提示字元]。
- 在命令提示字元中,請輸入下列指令,並按下 ENTER:
secedit/設定/db UnblockAccess.sdb/cfg < inf 檔 >
- 命令完成之後,您應該會收到類似下列的訊息:
工作已順利完成。
請參閱 %windir%\Security\Logs\Scesrv.log 檔的詳細資訊。
使用
icacls 命令來確認因應措施已移除。然後,您可以安心地刪除 UnblockAccess.sdb 和 UnblockAccess.inf 檔案。 請參閱 < 方法 1 > 如需有關如何使用
icacls 命令來確認因應措施 < 如何驗證這項因應措施 > 一節已被移除。
方法 2: 停用 OLEDB32.dll 」 資料列位置 」 的功能
重要 這個區段、 方法或任務包含告訴您如何修改登錄的步驟。然而,如果您不當修改登錄,可能會發生嚴重的問題。因此,執行這些步驟時請務必小心。為加強保護,修改登錄之前,請務必將它備份起來。以後您就可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
322756?
(http://support.microsoft.com/kb/322756/
)
如何備份和還原在 Windows 登錄
若要停用 「 資料列位置 」 功能的 OLEDB32.dll,刪除下列的資料列位置登錄子機碼:
HKEY_CLASSES_ROOT\CLSID\{2048EEE6-7FA2-11D0-9E6A-00A0C9138C29}
停用的 OLEDB32.dll 」 資料列位置 」 功能的效果
所有使用
RowPosition 屬性及相關的資訊的 ADO 應用程式會受到影響。使用 OLE DB 資料列位置庫的所有 OLE DB 應用程式會受影響。MSHTML 會受到影響。
如何復原這項因應措施
使用下列的登錄檔案來還原資料列位置的登錄子機碼:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{2048EEE6-7FA2-11D0-9E6A-00A0C9138C29}]
@="Microsoft OLE DB Row Position Library"
[HKEY_CLASSES_ROOT\CLSID\{2048EEE6-7FA2-11D0-9E6A-00A0C9138C29}\InprocServer32]
@="C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll"
"ThreadingModel"="Both"
[HKEY_CLASSES_ROOT\CLSID\{2048EEE6-7FA2-11D0-9E6A-00A0C9138C29}\ProgID]
@="RowPosition.RowPosition.1"
[HKEY_CLASSES_ROOT\CLSID\{2048EEE6-7FA2-11D0-9E6A-00A0C9138C29}\VersionIndependentProgID]
@="RowPosition.RowPosition"
方法 3: 移除註冊 OLEDB32.dll
如果要解除 OLEDB32.dll 的註冊使用下列其中。
附註您必須以系統管理員身分執行命令。
取消註冊 OLEDB32.dll 的效果
依賴 OLE DB 資料存取的應用程式將無法運作。
如何復原這項因應措施
若要復原這項因應措施,請使用下列其中一項。
附註您必須以系統管理員身分執行命令。
方法 4: 使用 SACL 項目,以停用 OLEDB32.dll
若要停用 OLEDB32.dll,您可以使用 SACL 項目。如果要執行此動作使用下列其中。
附註您必須以系統管理員身分執行命令。
- 對於支援版本的 Windows 2000、 Windows XP 和 Windows Server 2003
在命令提示字元中,請輸入下列指令,並按下 ENTER: cacls 」 程式 Files\Common Files\System\Ole DB\oledb32.dll"/E/P 每一個人: N
- 對於支援 Windows XP 商用版 x64 版、 x 64 版的 Windows Server 2003 和 Itanium 系統的 Windows Server 2003 的版本
在命令提示字元下輸入下列命令,,然後按下 ENTER: cacls 」 程式 Files\Common Files\System\Ole DB\oledb32.dll"/E/P 每一個人: N
cacls 」 程式檔案 (x86) \Common Files\System\Ole DB\oledb32.dll"/E/P 每一個人: N
- 如果是 Windows Vista 和 32 位元系統的 Windows Server 2008 的支援版本
在命令提示字元下輸入下列命令,,然後按下 ENTER: takeown/f"程式 Files\Common Files\System\Ole DB\oledb32.dll"
icacls 」 程式 Files\Common Files\System\Ole DB\oledb32.dll"/save %TEMP%\oledb32.32.dll.TXT
icacls 」 程式 Files\Common Files\System\Ole DB\oledb32.dll"/deny everyone:(F)
- 對於支援 Windows Vista x64 版、 為 x x64 型系統的 Windows Server 2008 和 Itanium 系統的 Windows Server 2008 的版本
在命令提示字元下輸入下列命令,,然後按下 ENTER: takeown/f"程式 Files\Common Files\System\Ole DB\oledb32.dll"
icacls 」 程式 Files\Common Files\System\Ole DB\oledb32.dll"/save %TEMP%\oledb32.32.dll.TXT
icacls 」 程式 Files\Common Files\System\Ole DB\oledb32.dll"/deny everyone:(F)
takeown/f"程式檔案 (x86) \Common Files\System\Ole DB\oledb32.dll"
icacls 」 程式檔案 (x86) \Common Files\System\Ole DB\oledb32.dll"/Save %TEMP%\oledb32.64.dll.TXT
icacls 」 程式檔案 (x86) \Common Files\System\Ole DB\oledb32.dll"/deny everyone:(F)
取消註冊 OLEDB32.dll 的效果
依賴 OLE DB 資料存取的應用程式將無法運作。
如何復原這項因應措施
若要復原這項因應措施,使用下列其中:
附註您必須以系統管理員身分執行命令。
- 對於支援版本的 Windows 2000、 Windows XP 和 Windows Server 2003
在命令提示字元中,請輸入下列指令,並按下 ENTER: cacls 」 程式 Files\Common Files\System\Ole DB\oledb32.dll"/E/R 每個人都
- 對於支援 Windows XP 商用版 x64 版、 x 64 版的 Windows Server 2003 和 Itanium 系統的 Windows Server 2003 的版本
在命令提示字元下輸入下列命令,,然後按下 ENTER: cacls 」 程式 Files\Common Files\System\Ole DB\oledb32.dll"/E/R 每個人
cacls 」 程式檔案 (x86) \Common Files\System\Ole DB\oledb32.dll"/E/R 每個人都
- 如果是 Windows Vista 和 32 位元系統的 Windows Server 2008 的支援版本
在命令提示字元中,請輸入下列指令,並按下 ENTER: icacls 」 程式 Files\Common Files\System\Ole DB"/ 還原 %TEMP%\oledb32.32.dll.TXT
- 對於支援 Windows Vista x64 版、 為 x x64 型系統的 Windows Server 2008 和 Itanium 系統的 Windows Server 2008 的版本
在命令提示字元下輸入下列命令,,然後按下 ENTER: icacls 」 程式 Files\Common Files\System\Ole DB"/ 還原 %TEMP%\oledb32.32.dll.TXT
icacls 」 程式檔案 (x86) \Common Files\System\Ole DB"/ 還原 %TEMP%\oledb32.64.dll.TXT
如何判斷是否正在執行 32 位元或 64 位元版本的 Windows
如果您不確定的您正在執行的 Windows 版本,或不論它是 32 位元版本或 64 位元版本,開啟系統資訊 (項),並檢閱列出
系統類型 的值。 要這麼做,請您執行下列步驟:
- 按一下 [開始],並再按一下 [執行] 或按 [開始搜尋。
- 輸入 msinfo32.exe,然後按下 ENTER。
- 在 [系統資訊],檢閱 系統類型 值。
- 為 32 位元版本,系統輸入 值會是 Windows 的 x x86 型電腦。
- 針對 64 位元版本,系統輸入 值會是 Windows 的 x x64 為主的 PC。
如需有關如何判斷是否執行的 32 位元或 64 位元的版本的 Windows 的資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
827218?
(http://support.microsoft.com/kb/827218/
)
如何判斷您的電腦執行的 32 位元版本或 64 位元版本的 Windows 作業系統