Estoy a punto de implementar una función de licencia muy básica para mi aplicación. Se puede otorgar un número de serie por máquina (o por sistema operativo) o por usuario (como para CAL en Windows Server: si mi aplicación es utilizada por varios usuarios en una máquina o si es utilizada por un usuario en varias máquinas).Licencia .NET aplicación por máquina/por usuario licencia
Para licencia por sistema operativo, utilizo SerialNumber de Win32_OperatingSystem.
Para la concesión de licencias por usuario, que utilizo:
WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent(); if (currentIdentity != null) { SecurityIdentifier userSid = currentIdentity.User.AccountDomainSid; Console.WriteLine(userSid); }
Un hash de un número de serie OS obtenido o SID es entonces almacenada en la base de datos, asociado con serial aplicación; cada vez que se inicia el programa, consulta al servidor, enviando el hash del sistema operativo SN/SID y la serie de la aplicación.
¿Es correcto hacerlo o está completamente equivocado? ¿Funcionará en todas las máquinas de Windows? (Por ejemplo, using motherboard serial is wrong)
Me parece bien, he estado usando hashes de identificadores de hardware a través de WMI para uno de los proyectos en el trabajo. Recuerde no asumir el formato de ninguna de las identificaciones de hardware. He visto errores causados por el código escrito para suponer que las cadenas devueltas no devuelven espacios ni nada. – anonymous
Bueno, viendo el número de visitas y el hecho de que no hay otras respuestas, concluyo que mi enfoque no es totalmente incorrecto. @Mr Roys, tal vez usted puede promover su comentario a una respuesta, por lo que podría aceptarlo? –
También le recomendamos echar un vistazo al escenario cuando se usa un entorno virtual. ¿Rendiría todavía un sistema operativo único s/n? Sé que esta no es una respuesta ... pero no pude agregar un comentario aquí .. –