Saltar al contenido

¿Cómo obtengo un identificador único para un dispositivo dentro de Windows 10 Universal?

Este grupo redactor ha pasado mucho tiempo buscando la resolución a tus preguntas, te regalamos la respuestas de modo que nuestro objetivo es que resulte de gran ayuda.

Solución:

Esa es la solución completa para Windows Desktop:

  • Agregue la referencia de extensión “Extensiones de escritorio de Windows para UWP” como Peter Torr – MSFT mencionado.

Utilice este código para obtener el HardwareId:

using System;
using Windows.Security.ExchangeActiveSyncProvisioning;
using Windows.System.Profile;

namespace Tobit.Software.Device

    public sealed class DeviceInfo
    
        private static DeviceInfo _Instance;
        public static DeviceInfo Instance
        
            get 
                if (_Instance == null)
                    _Instance = new DeviceInfo();
                return _Instance; 

        

        public string Id  get; private set; 
        public string Model  get; private set; 
        public string Manufracturer  get; private set; 
        public string Name  get; private set; 
        public static string OSName  get; set; 

        private DeviceInfo()
        
            Id = GetId();
            var deviceInformation = new EasClientDeviceInformation();
            Model = deviceInformation.SystemProductName;
            Manufracturer = deviceInformation.SystemManufacturer;
            Name = deviceInformation.FriendlyName;
            OSName = deviceInformation.OperatingSystem;
        

        private static string GetId()
        
            if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.System.Profile.HardwareIdentification"))
            
                var token = HardwareIdentification.GetPackageSpecificToken(null);
                var hardwareId = token.Id;
                var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(hardwareId);

                byte[] bytes = new byte[hardwareId.Length];
                dataReader.ReadBytes(bytes);

                return BitConverter.ToString(bytes).Replace("-", "");
            

            throw new Exception("NO API FOR DEVICE ID PRESENT!");
        
    

Actualización para Windows 1609 (“Actualización de aniversario”)

Consulte estas preguntas y respuestas para conocer una forma mucho mejor de obtener una identificación.

Información antigua para versiones anteriores del sistema operativo

Debe agregar una referencia a los SDK de escritorio y/o móvil para compilar contra el token de hardware. En tiempo de ejecución debe utilizar el ApiInformation escriba para consultar si la API está presente antes de usarla (otras familias de dispositivos como Xbox no la tienen).

Dicho esto, muchas veces, cuando las personas solicitan la identificación del dispositivo que en realidad no es la mejor solución para su problema, ¿está seguro de que necesita identificar el dispositivo físico durante toda su vida útil, incluso si cambia la propiedad?

Parece que

var deviceInformation = new EasClientDeviceInformation();
string Id = deviceInformation.Id.ToString();

está haciendo la magia, refiriéndose a EasClientDeviceInformation proporciona una identificación única.

La propiedad Id representa DeviceId usando el GUID truncado de los primeros 16 bytes del hash SHA256 de MachineID, User SID y Package Family Name donde MachineID usa el SID del grupo de usuarios locales.

PERO solo funciona para las aplicaciones de la Tienda Windows… así que tiene que haber otra solución.

Eres capaz de añadir valor a nuestro contenido informacional aportando tu experiencia en las crónicas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *