Identificar \Device\Harddisk# en Windows

Algunos de los registros de eventos de Windows utilizan identificadores internos diferentes, para conocer la relación de posible nombres del objeto al que se refieren:

Podemos utilizar la utilidad WinObj de Sysinternals para obtener la relación, desde la carpeta "Device":

O desde la carpeta "GLOBAL??" ordenando por "Symlink" hasta llegar a los dispositivos de disco duro en "\Device\Harddisk..."

Mediante Powershell, donde el DeviceID corresponde con HardDisk#

Get-PhysicalDisk | Select -Prop DeviceId,FriendlyName,SerialNumber

En el registro de Windows dentro la clave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\disk\Enum

Mediante el listado de drivers instalados:

wmic /output:c:\drivers.txt path Win32_PnPSignedDriver

 


Funciones personalizadas en expresiones LINQ

En las últimas versiones de Entity Framework ciertos métodos que antes si eran aceptados, como también se podía realizar en SQL, han dejado de estar disponibles. Aquellas funciones heredadas directamente de SQL han quedado englobadas en la misma clase. Algo que antes era habitual pero no precisamente una buena forma de solucionar... las conversiones de tipos de datos, ¿quien no ha convertido un string en entero en SQL?

LINQ to Entities does not recognize the method 'XXXXXXX' method, and this method cannot be translated into a store expression

Si hablamos con propiedad y utilizando todo el potencial de los ORM no es una buena práctica, debemos revisar y guardar los datos con el tipo más apropiado, pero si nos vemos forzados a utilizarlas... podemos personalizar funciones dentro de nuestro modelo de datos.

Abrimos nuestro EDMX y definimos la función:

    <edmx:ConceptualModels>
      <Schema Namespace="NombreDeMiModelo" Alias="Self" annotation:UseStrongSpatialTypes="false" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
        <Function Name="convertirDouble" ReturnType="Edm.Double"> 
        <Parameter Name="stringvalue" Type="Edm.String" /> 
        <DefiningExpression> 
            cast(stringvalue as Edm.Double)
        </DefiningExpression> 
        </Function>
...       

Definimos en nuestra clase la función:

using System;
using System.Data.Entity;
using System.Data.Objects.DataClasses;

public partial class MiModeloContext
{
    /// <summary>
    ///     Este método existe para poder ser usando dentro de expresiones LINQ
    ///     convierte un texto en número (Double)
    /// </summary>

    [DbFunction("NombreDeMiModelo", "convertirDouble")]
    public static double convertirDouble(string stringvalue)
    {
        return Double.Parse(stringvalue);
    }
}

 Ya podemos utilizar la función dentro de las expresiones:

datos = miEntidad.miDato.Where(x => SqlFunctions.IsNumeric(x.aux) > 0 &&
MiModeloContext.ParseDouble(x.aux) > numero)
.FirstOrDefault();

 

Aunque deberemos revisar si realmente nuestro modelo de datos es coherente...

Referencia: Calling Functions in LINQ to Entities Queries

ResolveUR: Error durante la instalación

La extensión ResolveUR todavía no tiene el archivo de instalación adaptador a Visual Studio 2019 pero funciona como en versiones anteriores, deberemos adaptar el fichero de instalación VSIX

This extension cannot be installed because the following references are missing: Microsoft.VisualStudio.Component.CoreEditor

Dentro del fichero catalog.json sustituimos:

"Microsoft.VisualStudio.Component.CoreEditor":"[15.0.26208.0,16.0)"}

Por la versión de VS2019:

"Microsoft.VisualStudio.Component.CoreEditor":"[15.0,17.0)"}

Continuará con la ejecución como en versiones anteriores:

Descargar ResolveUR_MOD_VS2019.zip (46,35 kb)

SILTRA 2.2.0: Error al procesar remesas INSS

El software de la Seguridad Social muestra un error al intentar procesar las remesas: "Error 713 Error definido por la aplicación o el objeto frmAfilia.cmdSiguiente_Click" desde soporte indican que reinstalar soluciona el problema... no es así claro.

La solución pasa por instalar la versión de otro programa WinSuite32 indicando durante la instalación que si encuentra librerías más antiguas no deben sustituirse (Importante seleccionar "No a todo") y resulta...

El problema es de base, una aplicación en Java que depende de librerías de PC que no se incluyen con la distribución del programa, incluso sacan un parche para sustituir ejecutables con el mismo número de versión... 

Encontrar librerías de Visual Basic 5, OCX de más de 10 años... dentro del programa no es muy alentador...

gestores.configuracion.Gestor_Configuracion : validarVersionesWinsuite : Version Modulo WsAfilia: 6.2.0
gestores.configuracion.Gestor_Configuracion : validarVersionesWinsuite : Version Modulo WsINSS: 5.0.0
gestores.configuracion.Gestor_Configuracion : validarVersionesWinsuite : Version Modulo WsImpresion: 6.2.0
gestores.configuracion.Gestor_Configuracion : validarVersionesWinsuite : Version SILTRA WsAfilia: 6.2.0
gestores.configuracion.Gestor_Configuracion : validarVersionesWinsuite : Version SILTRA WsINSS: 5.0.0
gestores.configuracion.Gestor_Configuracion : validarVersionesWinsuite : Version SILTRA WsImpresion: 6.2.0

El nivel de desarrollo de aplicaciones en la administración pública no da mucha confianza...

 

Windows NT virtualizado con Hyper-V

Si anteriormente vimos la posibilidad de virtualizar un entorno antiguo con VMware, tambien es posible realizarlo con tecnología Hyper-v de Microsoft. Debemos tener en cuenta que no hay soporte para ratón desde la consola de Hyper-v, deberemos instalar acceso remoto adicional (UltraVNC por ejemplo).

Para la configuración de la conectividad de red, deberemos añadir un "Adaptador de red heredado" e instalar los drivers de red para la tarjeta "Intel 21140 based 10/100 mbps Ethernet Controller" indicando la ruta del driver (habitualmente "D:\i386\WNT40\NDIS40"). Si no disponemos en la máquina virtual de los archivos necesarios, podemos crear un fichero ISO con lo que necesitemos para insertarlo como unidad de CD desde Hyper-v

Una vez tengamos conectividad de red y acceso remoto, podemos facilitar la utilización instalando un driver de pantalla Universal VESA Windows NT para ampliar número de colores y resolución