windows-8 windows-runtime

¿Puedo identificar un dispositivo de forma exclusiva en Windows 10/Windows 8/WinRT?



windows-8 windows-runtime (3)

¿Existe algún mecanismo para identificar un dispositivo de forma única (incluso si es anónimo)?

Para ser claros, por "dispositivo" me refiero a la computadora / slate / pc.

Windows 8.x

http://codepaste.net/ybt893

string HardwareId() { var token = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null); var hardwareId = token.Id; var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(hardwareId); var bytes = new byte[hardwareId.Length]; dataReader.ReadBytes(bytes); return BitConverter.ToString(bytes); }

Windows 10

Debe agregar el SDK de la extensión para dispositivos móviles y / o de escritorio.

string HardwareId() { var token = HardwareIdentification.GetPackageSpecificToken(null); var hardwareId = token.Id; var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(hardwareId); var bytes = new byte[hardwareId.Length]; dataReader.ReadBytes(bytes); return BitConverter.ToString(bytes); }


¿Podría usarse esto como una identificación consistente para el usuario que inició sesión?

http://msdn.microsoft.com/en-us/library/windows/apps/windows.security.exchangeactivesyncprovisioning.easclientdeviceinformation.id.aspx

EasClientDeviceInformation.Id | propiedad de identificación

Devuelve el identificador de la computadora local. La propiedad Id representa el Id. De dispositivo usando el GUID truncado de los primeros 16 bytes del hash SHA256 de Id. De máquina, SID de usuario e Id. De aplicación, donde el Id. De máquina usa el SID del grupo de usuarios locales. Cada componente del GUID se devuelve en orden de bytes de red.


Parece que no hay una manera conveniente para que las aplicaciones Metro Style en Windows 8 obtengan un identificador único mantenido por el sistema, como Windows Phone 7 con su Microsoft.Phone.Info.DeviceExtendedProperties.GetValue( "DeviceUniqueId" )

La mejor solución que he encontrado hasta ahora es simplemente generar un nuevo guid en el almacenamiento local de la aplicación y usar ese identificador para identificar la computadora para los lanzamientos actuales y futuros de su aplicación.

var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; Object value = localSettings.Values["uniqueDeviceId"]; if (!value) { value = Guid.NewGuid(); localSettings.Values["uniqueDeviceId"] = value; }

Tenga en cuenta que el usuario podría eliminar el almacenamiento local y hacer que su aplicación olvide y regenere ese valor (o posiblemente incluso modifique / falsifique el valor), así que no dependa de él por razones de seguridad críticas. Ya que solo estoy usando esta técnica para estadísticas aproximadas y reportes de uso, esto está bien para mis necesidades.


Tal habilidad se acaba de agregar en Windows 8 RTM:

Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null)