Síntomas
Las columnas de dirección URL y el Nombre de Host de destino en el registro de proxy web de Microsoft Forefront Threat Management Gateway 2010 pueden mostrarse como valores ilegibles. Este problema se produce cuando los usuarios acceder a sitios Web utilizando un nombre de dominio internacionalizado (IDN) y las entradas del registro se recuperan del disco. Nota: IDN es nombres de dominio que pueden contener caracteres Unicode y se tiene acceso mediante transcripción Punycode. Threat Management Gateway convierte el nombre Punycode en la representación Unicode cuando se ven las entradas del registro en la vista de registro en el complemento de administración de Forefront TMG de Microsoft Management Console (MMC). Sin embargo, cuando se recuperan las entradas del registro del disco, los caracteres no ASCII en la cadena Unicode se reemplazan con un signo de interrogación (?), como explicamos en la sección "Causa".
Causa
Este problema se produce porque las columnas de registro de Threat Management Gateway se guardan en formato ASCII y cuando los registros se escriben en el disco, los valores de la dirección URL y las columnas de Nombre de Host de destino se convierten de Unicode a ASCII. Esto hace que cualquier valor no ASCII en el valor que se reemplazará por un signo de interrogación (?).
Solución
Para resolver este problema, instale el paquete acumulativo de actualizaciones 4 para Forefront Threat Management Gateway 2010 Service Pack 2 y, a continuación, ejecute el script en la sección "Más información".
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".
Más información
Copie y pegue el siguiente script en Notepad.exe y, a continuación, guarde el archivo como "SetPersistLogAsPunycode.vbs".
'Define the constants needed.Const strVpsGUID = "{143F5698-103B-12D4-FF34-1F34767DEABC}"Const strVpsPropertyName = "PersistLogAsPunycode"Const Error_FileNotFound = &H80070002Set objArgs = wscript.ArgumentsfInvalidParameterValue = Falseif objArgs.Count > 0 then if objArgs(0) = "0" then fPersistLogAsPunycode = False elseif objArgs(0) = "1" then fPersistLogAsPunycode = True else fInvalidParameterValue = True end ifend ifif objArgs.Count <> 1 or fInvalidParameterValue then wscript.echo "Usage: SetPersistLogAsPunycode.vbs <0|1>" wscript.echo wscript.echo "Control how log fields that may contain punycode-encoded parts are" wscript.echo "stored in the persistent log." wscript.echo wscript.echo " 0 - Persist the applicable log fields as ASCII (the default behavior)" wscript.echo " 1 - Persist the applicable log fields as Punycode" wscript.Quit 2end ifset objLogging = CreateObject("FPC.Root").GetContainingArray().LoggingSet objVPSet = OpenVPSet(objLogging, strVpsGUID)objVPSet.Value(strVpsPropertyName) = fPersistLogAsPunycodeobjLogging.Savefunction OpenVPSet(objParent, strVpsGUID) Set objVPSets = objParent.VendorParametersSets On Error Resume Next Set OpenVPSet = objVPSets.Item(strVpsGUID) ' Save the Err properties in case it needs to be re-raised errNumber = Err.Number errSource = Err.Source errDescription = Err.Description errHelpFile = Err.HelpFile errHelpContext = Err.HelpContext On Error GoTo 0 if errNumber = Error_FileNotFound Then Set OpenVPSet = objVPSets.Add(strVpsGUID) Elseif errNumber < 0 Then ' An error other than "file not found" occured -- re-raise the error, ' this time not under "On Error Resume Next" Err.Raise errNumber, errSource, errDescription, errHelpFile, errHelpContext End Ifend function
Para habilitar Threat Management Gateway conservar las entradas del registro como valores Punycode, ejecute el siguiente comando:
cscript.exe SetPersistLogAsPunycode.vbs 1Para revertir Threat Management Gateway a su comportamiento predeterminado de los campos de registro como caracteres ASCII, ejecute el siguiente comando:
cscript.exe SetPersistLogAsPunycode.vbs 0
Referencias
Véase la terminología que Microsoft utiliza para describir las actualizaciones de software.