Determinati costrutti IDL il marshalling vengono unmarshaled in modo non corretto da RPC

Traduzione articoli Traduzione articoli
Identificativo articolo: 824835 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato archiviato. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.
importante Vengono fornite informazioni su come modificare il Registro di sistema. Assicurarsi di backup del Registro di sistema prima di modificarlo. Verificare che come ripristinare il Registro di sistema se si verifica un problema. Per ulteriori informazioni su come eseguire il backup, ripristinare e modificare il Registro di sistema, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
256986Descrizione del Registro di sistema di Microsoft Windows
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Programmi che utilizzano chiamate di procedura remota (RPC) per comunicare con altri computer basati su Windows di Microsoft in una rete potrebbero non riuscire. Ad esempio, quando si utilizza un programma di Microsoft Visual Basic personalizzato tra due computer remoti, e il tipo Visual Basic programma utilizza definito dall'utente marshalling, Ŕ possibile trovare che costruisce determinati IDL (Interface Definition Language) viene eseguito il erroneamente marshalling e l'unmarshalling. ╚ ad esempio, Ŕ possibile che si verifichi uno dei seguenti sintomi:
  • La chiamata remota non riesce e viene restituito un codice di errore RPC_X_BAD_STUB_DATA dal programma di Visual Basic.
  • Dati non corretti Ŕ eseguito l'unmarshalling.

Cause

Questo problema pu˛ verificarsi se il componente RPC esegue il marshalling in modo non corretto o unmarshals determinati costrutti IDL. Versioni di Windows in modo non corretto pu˛ effettuare il marshalling e unmarshalling costrutti IDL includono:
  • Microsoft Windows XP (versione originale) e Windows XP aggiornamento di installazioni di Service Pack 1 (SP1) che includono la protezione MS03-039. Questo aggiornamento Ŕ trattato nel seguente articolo della Microsoft Knowledge Base:
    824146MS03-039: Un buffer overrun in RPCSS un utente malintenzionato di eseguire programmi dannosi
  • Microsoft Windows 2000
  • Microsoft Windows NT 4.0
  • Microsoft Windows 98
Questo problema pu˛ verificarsi in un programma Visual Basic se sono vere entrambe le condizioni seguenti:
  • Il file IDL utilizza una struttura contenente un campo a 8 byte, che utilizza qualsiasi uno dei seguenti tipi:
    DATA
    Doppio
    CY
    VARIANTE
    DECIMALE
    INT64/UINT64
  • Il campo a 8 byte Ŕ un campo non di primo e non vi Ŕ un campo che Ŕ di 4 byte o minori prima del campo a 8 byte contenute nella stessa struttura.
Ad esempio, questo problema pu˛ verificarsi se il file IDL utilizza una struttura che Ŕ simile al seguente:
Public Type myType

member1 As Long

member2 As Double

End Type

Risoluzione

Informazioni sull'hotfix per Windows Server 2003

Per comunicare con le versioni di Windows che in modo errato il marshalling e unmarshalling costrutti IDL, attenersi alla seguente procedura:
  1. Effettuare una delle seguenti operazioni:
    • Installare la versione pi¨ recente service pack per Windows Server 2003 . Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
      889100Come ottenere il service pack pi¨ recente per Windows Server 2003
    • Si nstalla l'aggiornamento della protezione descritto nel bollettino MS05-051 .Per ulteriori informazioni sul Bollettino Microsoft sulla sicurezza MS05-051, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
      902400MS05-051: Alcune vulnerabilitÓ in MSDTC e COM + possibile esecuzione di remoto codice
  2. Aggiungere la voce del Registro di sistema UDTAlignmentPolicy. Per effettuare questa operazione, attenersi alla seguente procedura:

    avviso Pu˛ causare seri problemi se si modifica il Registro di sistema in modo errato mediante l'editor del Registro di sistema o utilizzando un altro metodo. Questi problemi potrebbero richiedere la reinstallazione del sistema operativo. Microsoft non garantisce che sia possono risolvere questi problemi. La modifica del Registro di sistema Ŕ a rischio e pericolo dell'utente.
    1. Fare clic su Start , scegliere Esegui , nella casella Apri , digitare regedit e quindi fare clic su OK .
    2. Individuare la seguente sottochiave del Registro di sistema:
      HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc
    3. Scegliere Nuovo dal menu Modifica , quindi valore DWORD .
    4. Digitare UDTAlignmentPolicy e quindi premere INVIO.
    5. Fare doppio clic su UDTAlignmentPolicy e quindi digitare un valore per determinare il formato dati che verrÓ utilizzato il RPC in base alle seguenti informazioni:

      Se il valore UDTAlignmentPolicy Ŕ impostato su 0, RPC eseguirÓ il marshalling utilizzando il formato dati non corretti "old". RPC comunicherÓ con le versioni di Windows che in modo errato il marshalling e unmarshalling costrutti IDL. Ad esempio, RPC comunicherÓ con Windows 2000 oppure aggiornare le installazioni di Windows XP SP1 che includono il MS03-039.

      Se il valore UDTAlignmentPolicy Ŕ impostato su 0, RPC possono comunicare con computer basati su Windows 2000.

      Se il valore UDTAlignmentPolicy Ŕ impostato su 1, RPC eseguirÓ il marshalling utilizzando il formato "nuovo" di rete corretto. RPC comunicherÓ con le versioni di Windows che correttamente il marshalling e unmarshalling costrutti IDL. Ad esempio RPC comunicherÓ con Windows Server 2003 o aggiornamento di installazioni di Windows XP che includono il MS03-026.

      Se la voce UDTAlignmentPolicy non esiste, la chiamata remota avrÓ esito negativo e RPC restituirÓ un codice di errore RPC_X_BAD_STUB_DATA quando RPC tenta di eseguire il marshalling o effettuare l'unmarshalling interessato tipi.

      importante Quando il valore UDTAlignmentPolicy Ŕ impostato su 0, Ŕ possibile che un computer basato su Windows Server 2003 scambiare i dati per il costrutto IDL con le versioni di Windows che in modo errato il marshalling e unmarshalling costrutti IDL. Tuttavia, il costrutto IDL Ŕ eseguito l'unmarshalling del formato non corretto. L'utilizzo di non corretto nel codice di marshalling e l'unmarshalling dei potrebbe impedire l'interoperabilitÓ di questo costrutto IDL stesso e i costrutti IDL in altri, Ŕ quando i programmi comunicare con computer che eseguono versioni di Windows che correttamente il marshalling e unmarshalling costrutti IDL.

Informazioni sul Service pack per Windows XP

Per risolvere il problema, procurarsi l'ultimo service pack per Windows XP. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
322389Come ottenere il service pack pi¨ recente per Windows XP
In Windows XP Service Pack 2, Ŕ possibile modificare la voce di UDTAlignmentPolicy del Registro di sistema per modificare la modalitÓ che RPC comunica con diverse versioni di Windows. Per eseguire questa operazione, attenersi alla seguente sezione passaggio 3 le "Hotfix informazioni per Windows Server 2003".

Informazioni sull'hotfix per Windows XP

Per comunicare con le versioni di Windows che in modo errato il marshalling e unmarshalling costrutti IDL, ad esempio aggiornare le installazioni di Windows 2000 o Windows XP SP1 includono il MS03-039, installare l'aggiornamento MS03-039 sui computer di basato su Windows XP SP1. Per ulteriori informazioni il MS03-039, fare clic sul seguente numero per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
824146MS03-039: Un buffer overrun in RPCSS un utente malintenzionato di eseguire programmi dannosi
Un hotfix supportato non Ŕ attualmente disponibile per computer basati su Windows XP che comunicano tramite RPC con le versioni di Windows che correttamente il marshalling e unmarshalling costrutti IDL. Queste versioni sono Windows Server 2003 e aggiornamento di installazioni di Windows XP che includono il MS03-026.

Status

Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a". Questo problema Ŕ stato innanzitutto corretto in Microsoft Windows XP Service Pack 2.

Informazioni

Versioni di Windows che correttamente il marshalling e unmarshalling il costrutto IDL menzionato nella sezione "Cause" includono:
  • Microsoft Windows Server 2003 e versioni successive
  • Le installazioni di Windows XP Service Pack 1 (SP1) che includono il MS03-026 aggiornamento ma non includono l'aggiornamento della protezione MS03-039. L'aggiornamento MS03-026 Ŕ documentato nel seguente articolo:
    823980MS03-026: Buffer overrun nell'interfaccia RPC possibile esecuzione di codice
  • Microsoft Windows XP Service Pack 2 (SP2)
Nota Un hotfix supportato non Ŕ attualmente disponibile per computer basati su Windows 2000 che comunicano tramite RPC con le versioni di Windows che correttamente il marshalling e unmarshalling costrutti IDL. Queste versioni sono Windows Server 2003 e aggiornamento di installazioni di Windows XP che includono il MS03-026.

ProprietÓ

Identificativo articolo: 824835 - Ultima modifica: giovedý 27 febbraio 2014 - Revisione: 13.6
Le informazioni in questo articolo si applicano a:
  • 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
Chiavi:á
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbtshoot kbwinxpsp2fix kbwinxppresp2fix kbfix kbbug KB824835 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 824835
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

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