.NET 소프트웨어의 시험판을 만드는 방법은 무엇입니까? [닫은
-
19-09-2019 - |
문제
Visual Studio에는 소프트웨어의 평가판 버전을 만들기위한 내장 도구가 있습니까? 어떤 도구가 작업을 수행 할 수 없다면?
.NET 플랫폼에서 시험판을 작성하기위한 모범 사례는 무엇입니까?
이러한 관행은 응용 프로그램 유형 (웹 응용 프로그램, Windows Forms Applications, DLL ECT)에 어떻게 의존 하는가?
해결책
"시험"상태는 비교적 퍼지 개념입니다. "도구"를 구축 할 수 있도록 정확하게 지정하기가 어렵습니다.
어떤 옵션?
로컬로 설치 가능한 소프트웨어 :
법적 제한. 전체 기능은 바로 출발하지만 사용자는 시험 기간이 끝난 후에는 윌링을 중단해야합니다. 기본적으로 신뢰 (개인 사용자의 경우) 또는 법적 기소 (회사 사용자)의 보호.
제한된 기능. 사용자는 라이트 버전을 다운로드 할 수 있습니다. 그들이 전체를 찾기로 결정할 때마다 나머지 기능을 잠금 해제하는 라이센스 키를 요청합니다. 또는 정식 버전에 대한 비밀 다운로드 링크를 제공합니다. 더 좋은 점, 워터 마킹 된 바이너리를 만들면 소스에 대한 무단 사용/배포를 추적 할 수 있습니다.
웹 소프트웨어 :
- 시험 또는 전체는 사용자 계정에서 활성화 된 기능의 문제입니다. 모든 사용자가 웹을 통해 애플리케이션에 액세스 할 수 있으므로 무단으로 설치할 소프트웨어 사본이 없습니다. 각 사용자는 자체 계정으로 작동하며 부여 된 기능 만 액세스 할 수 있습니다.
다른 팁
이것은 매우 잘 덮여 있습니다 Shareware 스타터 키트. 제한된 시험, 보안 활성화, 등록 및 페이팔 통합에 대한 코드가 있습니다. 적극 권장합니다. 그 바퀴를 발명하고 싶지 않습니다.
내가 당신에게 준 링크는 큰 것이 아닙니다. 다운로드를 얻으려면 라이센스를 클릭해야합니다. 해당 키트의 C# 특정 버전을 설명하는 링크를 더 이상 찾을 수 없습니다.
다음 스레드를 확인하십시오30 일 시행 재판을 구현합니다.
스레드 중 하나에 언급 된대로 시험판 기능을 구현할 수있는 툴킷이 있습니다.보호 도구를 복사하여 장치 수를 제한하십시오.
Visual Studio가 소프트웨어에서 시험판 기능을 구현하기위한 몇 가지 내장 도구를 제공하는지는 모릅니다.
Visual Studio 또는 .NET에는 라이센스 및 복사 보호를위한 내장 도구가 있습니다. 자신의 계획을 개발하거나 준비된 제도를 사용해야합니다.
모범 사례 및 팁은이 기사를 참조하십시오. 크립토 컨택을 사용하여 소프트웨어 해커를 방지하고 크랙 방지하는 8 가지 방법
면책 조항 : 나는 cryptolensing의 개발자 인 Logicnp Software에서 일합니다.
시험판 기능은 레지스트리에서 설치된 날짜를 읽고 모드가 시험 또는 유효한 경우 ...
이 클래스는 레지스트리 안팎에서 읽고 쓸 수 있습니다 ...
static string Regname = "Registryname";
public bool writeRegistryKey(string Key, string value)
{
try
{
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey(Regname);
key.SetValue(Key, value);
key.Close();
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
return false;
}
}
public string readRegistryKey(string Value)
{
try
{
string keyValue = null;
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey(Regname);
keyValue = key.GetValue(id).ToString();
key.Close();
return keyValue;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
return null;
}
}