내 응용 프로그램에 대한 매우 기본적인 라이센스 기능을 구현하려고합니다. 일련 번호는 컴퓨터마다 (또는 운영 체제 별) 또는 사용자별로 부여 될 수 있습니다 (Windows Server의 CAL의 경우 : 한 대의 컴퓨터에서 여러 명의 사용자가 응용 프로그램을 사용하거나 여러 대의 컴퓨터에서 한 명의 사용자가 사용하는 경우). 기계).컴퓨터 당/응용 프로그램 당 라이센스 당 .NET 응용 프로그램
는 당 운영 체제 라이선스를 들어, 나는 의 serialNumber Win32_OperatingSystem의를 사용합니다.
사용자 별 라이센싱, I가 사용
WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent(); if (currentIdentity != null) { SecurityIdentifier userSid = currentIdentity.User.AccountDomainSid; Console.WriteLine(userSid); }
얻어진 OS 시리얼 번호 해시 또는 SID 다음 애플리케이션 직렬로 연결된 데이터베이스에 저장된다; 프로그램이 시작될 때마다 OS SN/SID 및 응용 프로그램 일련의 해시를 보내 서버를 쿼리합니다.
옳은 일입니까, 아니면 완전히 잘못 되었습니까? 모든 Windows 컴퓨터에서 작동합니까? (예 : using motherboard serial is wrong)
소리 나에게 잘 됐어, 직장에서 프로젝트 중 하나에 대해 WMI를 통해 하드웨어 ID의 해시를 사용 해왔다. 하드웨어 ID의 형식을 추측하지 말 것을 잊지 마십시오. 반환 된 문자열이 공백을 반환하지 않는다고 가정하여 작성된 코드 때문에 발생하는 버그를 보았습니다. – anonymous
글쎄, 조회수와 다른 응답이 없다는 사실을보고, 나는 나의 접근 방식이 완전히 잘못이 아니라고 결론 내린다. @ MrRyys, 아마도 당신은 대답에 대한 귀하의 의견을 홍보 할 수 있으므로 받아 들일 수 있을까요? –
가상 환경이 사용될 때 시나리오를 살펴볼 수도 있습니다. 여전히 고유 한 OS s/n을 산출합니까? 나는 이것이 대답이 아니라는 것을 안다. 그러나 여기에 덧글을 추가 할 수 없었다. .. –