2013-06-07 3 views
3

내 어셈블리 (.net exe)는 일반적으로 "Assembly.Load (경로 이름)"로 시작됩니다. 로드 된 어셈블리 내부에서 어셈블리를 시작한 어셈블리에 액세스하고 싶습니다. 기회가 있니?내 어셈블리를 시작한 사람 찾기

+0

어셈블리를 시작한 어셈블리에서 명령 줄 인수를 전달하고이를 사용하여 실행 프로그램을 식별 할 수 있습니다. –

+0

호출 어셈블리가 메서드를 호출하거나로드 된 어셈블리 안에 인스턴스를 생성합니까? – Rotem

+0

100 % 안정적인 방법으로 쉽게 찾을 수있는 백도어를 사용하지 마십시오. 어셈블리가로드하는 코드가 무엇이든 상관없이 공용 속성을 지정하기 만하면 코드에 알 필요가있는 내용을 코드에 알릴 수 있습니다. 백도어를 사용하면 지터가 릴리스 빌드의 메소드에 삽입 될 때 문제가 발생할 수 있습니다. 인수가있는 생성자는 코드가 올바른 작업을 수행하도록합니다. –

답변

2

Assembly.GetEntryAssembly()을 사용할 수 있습니다.

+0

이것은 호출 체인이 한 레벨 아래에있는 경우에만 올 바릅니다. 어셈블리 A가 엔트리 어셈블리 인 경우 어셈블리 B를로드 한 다음 어셈블리 C를로드하면 'GetEntryAssembly'는 어셈블리 B 대신 어셈블리 C에서 어셈블리 A를 반환합니다. – Rotem

+0

글쎄, 그는'Assembly.GetCallingAssembly() '를 누른다. –

+0

예, EntryAssembly가 작업을 수행하고 있습니다. 고맙습니다! – Gerhard

관련 문제