某些 IDL 建構會封送處理和 unmarshaled 不正確地由 RPC

文章翻譯 文章翻譯
文章編號: 824835 - 檢視此文章適用的產品。
本文已封存。本文係以「現狀」提供且不會再更新。
重要本文包含有關如何修改登錄的資訊。請確定您修改之前備份登錄。如果發生問題,請確定您知道如何還原登錄。如何備份、 還原,及修改登錄的相關資訊,請按一下下列的文件編號,檢視 Microsoft 知識庫中的文件:
256986Microsoft Windows 登錄的描述
全部展開 | 全部摺疊

在此頁中

徵狀

在網路上與其他 Microsoft Windows 電腦使用遠端程序呼叫 (RPC) 通訊的程式可能會失敗。封送,例如當您使用自訂的 Microsoft Visual Basic 程式兩部遠端電腦之間,並可能在 Visual Basic 程式使用使用者定義型別封送處理,尋找特定的介面定義語言 (IDL) 建構不正確地處理和解封送處理。比方說您可能會遇到下列徵狀的其中一個:
  • 遠端呼叫失敗,並 RPC_X_BAD_STUB_DATA 錯誤碼傳回由 Visual Basic 程式。
  • 不正確的資料是解封送處理。

發生的原因

如果 RPC 元件不正確地封送處理,或 unmarshals 某些 IDL 建構,可能就會發生這個問題。可能會不正確地封送處理,unmarshal IDL 建構的 Windows 版本包括下列各項:
  • Microsoft Windows XP (原始版本) 和 Windows XP 包含 MS03-039 安全性的 Service Pack 1 (SP1) 安裝更新。 此更新已記錄在下列 「 Microsoft 知識庫 」 文件:
    824146MS03-039: A 緩衝區滿溢 RPCSS 中可能會允許攻擊者執行惡意的程式
  • Microsoft Windows 2000
  • Microsoft Windows NT 4.0
  • Microsoft Windows 98
這個問題可能會發生在 Visual Basic 程式中兩種下列情況皆成立時:
  • IDL 檔會使用結構,包含使用任一下列類型的 8 位元組欄位:
    日期
    雙精度浮點數
    CY
    自設機甲
    十進位
    int64/uint64
  • 8 個位元組欄位是-第一個欄位,而則是 4 個位元組的欄位或變小,包含在相同的結構將 8 位元組欄位之前。
比方說這個問題如果使用,可能就會發生 IDL 檔案類似下列的結構:
Public Type myType

member1 As Long

member2 As Double

End Type

解決方案

Windows Server 2003 的 Hotfix 資訊

如果要通訊的不正確地封送處理和 unmarshal IDL 建構的 Windows 版本請依照下列步驟執行:
  1. 執行下列其中一項:
    • 安裝 Windows Server 2003 的 最新 Service Pack 如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
      889100如何取得最新的 Service Pack 的 Windows Server 2003
    • 我 nstall 安全性更新資訊安全佈告欄 MS05-051 中所述。如更多有關資訊安全佈告欄 MS05-051,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
      902400MS05-051: MS DTC 和 COM + 中的弱點可能會允許遠端程式碼執行
  2. 新增 UDTAlignmentPolicy 登錄項目。要這麼做,請您執行下列步驟:

    警告如果您修改登錄不當使用 「 登錄編輯程式 」,或使用另一個方法,可能會發生嚴重的問題。這些問題可能會要求您重新安裝作業系統。Microsoft 無法保證可以解決這些問題。您必須自己承擔修改登錄所造成的風險。
    1. 按一下 [開始]、 按一下 [執行],在 [開啟] 方塊中]、 輸入 regedit,然後按一下 [確定]]。
    2. 找出下列登錄子機碼:
      HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc
    3. 在 [編輯] 功能表上指向 [新增],然後按一下 [DWORD 值]。
    4. 鍵入 UDTAlignmentPolicy,並按下 ENTER。
    5. 連按兩下 UDTAlignmentPolicy,並鍵入一個值來判斷 RPC 將使用資料格式會根據下列資訊:

      如果 UDTAlignmentPolicy 值設為 0,RPC 會封送處理使用舊"不正確的資料格式。RPC 會與不正確地封送處理和 unmarshal IDL 建構的 Windows 版本的通訊。比方說 RPC 會與 Windows 2000 進行通訊,或包含 MS03-039 的 Windows XP SP1 安裝更新。

      如果 UDTAlignmentPolicy 值設為 0,RPC 可以與 Windows 2000 為基礎的電腦通訊。

      如果 UDTAlignmentPolicy 值設定為 1,RPC 會封送處理藉由使用新 「 正確 Wire 格式。RPC 會正確地封送處理和 unmarshal IDL 建構的 Windows 版本與通訊。比方說 RPC 會與 Windows Server 2003 進行通訊,或包含 MS03-026 的 Windows XP 安裝更新。

      如果 UDTAlignmentPolicy 項目不存在、 遠端呼叫就會失敗,RPC 會傳回 RPC_X_BAD_STUB_DATA 錯誤碼當 RPC 嘗試封送處理或 unmarshal 影響型別。

      重要UDTAlignmentPolicy 值設定為 0 時,Windows Server 2003 電腦可以交換 IDL 建構的不正確地封送處理和 unmarshal IDL 建構的 Windows 版本的資料。但是,IDL 建構是解封送處理成正確的格式。使用封送處理和 unmarshaling 程式碼可能會使這個相同的 IDL 建構的互通性和其他 IDL 建構不正確程式與執行的 Windows 版本的正確的電腦進行通訊的當封送處理,而且 unmarshal IDL 建構。

Windows XP 的服務套件資訊

如果要解決這個問題,取得最新的 Service Pack 的 Windows XP。如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
322389如何取得最新的 Windows XP Service Pack
您可以在 Windows XP Service Pack 2 中修改 UDTAlignmentPolicy 登錄項目,來調整與不同版本的 Windows 的 RPC 通訊的方式。若要執行這項作業,請遵循步驟 3 」 Hotfix 資訊中為 Windows Server 2003 」 一節。

Windows XP 的 Hotfix 資訊

例如 Windows 2000 或 Windows XP SP1 包含 MS03-039 的安裝更新與不正確地封送處理和 unmarshal IDL 建構的 Windows 版本通訊,請在您 Windows XP SP1 電腦上安裝 MS03-039 更新程式。如需有關 MS03-039 更新的請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項的:
824146MS03-039: A 緩衝區滿溢 RPCSS 中可能會允許攻擊者執行惡意的程式
藉由使用具有正確地封送處理和 unmarshal IDL 建構的 Windows 版本的 RPC 通訊的 Windows XP 的電腦目前無法支援的 Hotfix。這些版本都是 Windows Server 2003,並包括 MS03-026 的 Windows XP 安裝更新。

狀況說明

Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。 這個問題,首先已經在 Microsoft Windows XP Service Pack 2 中獲得修正。

其他相關資訊

正確地封送處理和 unmarshal IDL 建構中 < 原因 > 一節所提到的 Windows 版本包括下列各項:
  • Microsoft Windows Server 2003 和更新版本
  • 包括 MS03-026 的 Microsoft Windows XP Service Pack 1 (SP1) 安裝更新,但不包括 MS03-039 安全性更新。MS03-026 更新都將被記載下列 「 Microsoft 知識庫 」 文件中:
    823980MS03-026: 緩衝區滿溢 RPC 介面中可能會允許程式碼執行
  • Microsoft Windows XP Service Pack 2 (SP2)
附註藉由使用具有正確地封送處理和 unmarshal IDL 建構的 Windows 版本的 RPC 通訊的 Windows 2000 電腦目前無法支援的 Hotfix。這些版本都是 Windows Server 2003,並包括 MS03-026 的 Windows XP 安裝更新。

屬性

文章編號: 824835 - 上次校閱: 2014年2月27日 - 版次: 13.6
這篇文章中的資訊適用於:
  • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
  • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Web Edition
  • Microsoft Windows XP Professional 64-Bit Edition (Itanium) 2003
  • Microsoft Windows XP Professional 64-Bit Edition (Itanium)
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition (家用版)
  • Microsoft Windows XP Tablet PC Edition
  • Microsoft Windows XP Media Center Edition 2005 Update Rollup 2
關鍵字:?
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbtshoot kbwinxpsp2fix kbwinxppresp2fix kbfix kbbug KB824835 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:824835
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com