2010-03-19 2 views
2

라이센스가 첨부 된 응용 프로그램을 배포하려고합니다. 그러나, 나는 내 dll이 쉽게 Visual Studio에서 참조 할 수 없도록하고 싶습니다..NET에서 동적 연결에 대한 보안 설정

이 작업을 수행하는 일반적인 방법은 무엇입니까? 그러나 이것을 방지하기 위해 응용 프로그램을 만들지는 생각했지만 코드는 아키텍처에 따라 달라집니다. Windows 이외의 다른 아키텍처/플랫폼을 대상으로하지는 않지만 릴리스 빌드를 만든 후에 응용 프로그램을 설정하는 것이 나에게 임시 해결책 인 것 같습니다. 이것을 달성하기위한 다른 기술이 있습니까?

+1

내가 틀릴 수도 있지만, ngen이 원래 어셈블리를 버릴 수 있다고 생각하지 않습니다. 이는 성능 /로드 타임 최적화이며 난독 화 도구가 아닙니다. –

답변

3

Ngen.exe 이미지를 배송 할 수 없으므로 Ngen.exe 이 대상 컴퓨터에서 실행되어야합니다. NET 설치 프로그램이 설치하는 전용 서비스가 있습니다. 어쨌든 아무것도 보호하는 데 도움이되지는 않지만 원래의 어셈블리도 있어야합니다.

.NET에는 기본적으로 라이센스가 지원되지만 설계 가능한 클래스에서만 작동합니다. System.ComponentModel.License는 기본 클래스 선언입니다. LicFileLicenseProvider는이를 구현 한 것입니다.

타사에서 구입할 수있는 동글은 탁월합니다. 어느 쪽이든, 귀하의 지적 재산권에 대한 유일한 진정한 보호는 법원에 있습니다. 저작권을 보이는 곳에 표시하려면 코드를 사용하기 전에 명시 적 라이센스 계약 단계를 거치게하십시오.

+0

+1 "IP에 대한 유일한 진정한 보호는 법정에있다." –

+0

정보 주셔서 감사합니다. 그러나 동글이 탁월하다는 사실에 동의하지는 않지만이 경우에는 문제가되지 않습니다. License 클래스에 대한 자세한 정보를 얻고 나를 위해 무엇을 할 수 있는지보십시오. 또한, 코드 액세스 보안과 병행 해보십시오. – Henri

0

설치 프로그램을 사용하는 경우 설치 중에 ngen을 사용할 수 있습니다. SQL Server가이를 수행합니다.

난독화할 수도 있습니다. 그것은 본질적으로 연결을 막지는 않지만 dll이 무엇을 하는지를 알기 어렵게 만들고, 다른 프로세스에 "유용성"을 줄입니다.

+0

nobugz는 원본 어셈블리가 있어야하므로 아무런 의미가 없다고 말합니다. – Henri

+1

@Henri, 수정 해 주셔서 감사합니다! 나는 그것을 기억할 것이다. –

2

코드 액세스 보안 (CAS)에 클래스의 범위를 변경하는 경우. LinkDemand를 모든 상속 또는 방법 또는 어셈블리 체인 아래로 시행 할 수 있습니다.이 경우 모든 어셈블리 링크에는 강력한 이름 키와 필요한 다른 증거가 필요합니다.

+0

좋은 생각, 내가 이걸로 뭘 할 수 있는지보고자. – Henri