2012-06-17 2 views
1

가능한 복제를 외부 .EXE 베이킹 :
Embedded a *.exe into a dll는 C# 프로젝트에

은 내가 C# 프로젝트가 - 클래스 라이브러리 - DLL 파일을 생성합니다.

이 프로젝트 자체는 외부 .exe 파일을 실행합니다. (표준 프로세스 물건을 사용하고 잘 작동합니다.)

그러나 내 질문은 : 최종 소비자가 최종 DLL 파일을받을 수 있도록 프로젝트에 외부 .exe 파일을 어떻게 구울 수 있습니다, .exe 파일 자체를 보지 않고도?

이렇게하면 (.exe가 필요하기 전에) 이전에 한 DLL 파일을 계속받을 것이므로 클라이언트가 더 행복해집니다.

답변

1

런타임에 .exe가 필요한 클라이언트 인 경우 .exe 사본을 가지고 있는지 확인하십시오. 이럴 ...

PS :

당신은 다음 실행시를 "속임수"(은 "트로이 목마"와 같은) 자원으로 당신의 .DLL을 내장하여 클라이언트 추출 할 수 있습니다. 어느 쪽이 바보가 될지. 비싼. 그리고 위험합니다.

.exe가 필요한 경우 .exe를 제공하십시오. 그리고 그것에 대해 명시해야합니다.

고객이 명시 적으로 .exe를 거부하는 경우 구현이 요구 사항을 위반하며 도면 보드로 돌아 가야합니다.

"exe-as-resource"해결 방법은 거짓말이며 속임수입니다. 그리고 그것은 심지어 매우 효율적이거나 안전한 치트가 아닙니다. ALSO

:

보조 노트에

Embedded a *.exe into a dll

, 당신은 디스크에 자원 에서 파일을 끌어와 다음에서 코드를 실행할 때, 당신은 윈도우 데이터 실행 방지를 트리거 할 수 있음을 기억 - 기본적으로 Windows는 무언가가 코드 또는 데이터로 간주되는 경우 을 자동으로 검색하고 이 데이터 (리소스)와 유사하면 해당 데이터 이 코드로 실행되는 것을 방지합니다. 당신의 .NET 어셈블리는 네트워크를 통해 대신 로컬 드라이브에서 사용되는 것 인 경우

이것은 특히 끈적 문제가된다 - 가 제대로 작동이 되지 않을 수 있습니다 .NET 보안 구성의 모든 종류가있다.

4

외부 프로세스로 실행하려면 디스크에 있어야합니다. 리소스로 .dll에 포함되어 필요할 때 압축을 풀 수 있습니다.

+0

어느 쪽이 당연히 얇은 미쳤습니다. – paulsm4

+0

저는 제약 조건과 가능한 해결책을 확인하는 대신 그것을지지하지 않습니다. – bmm6o

+0

그 정신으로 당신은 100 % 정확합니다. 긍정적 인 기여에 감사드립니다. 근실하게 .. Paulsm – paulsm4