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.