로컬로 잘 실행되는 C# 응용 프로그램을 개발했습니다.Windows 2008 R2에서 전체 권한 제어를 사용하여 DLL을로드하지 못했습니다.
하지만 서버를 장착 할 때 문제가 있습니다.
응용 프로그램은 참조 (A.dll)에서 DLL 라이브러리를 사용하고 실행 지점에서 A.dll이 Temp 디렉터리에 다른 DLL (B.dll이라고 함)을 만듭니다. A.DLL이 B.DLL을로드 할 때 는하지만, 예외가 던져된다
system.invalidoperationexception: failed to load B.dll
나는 DLL을 소스에 액세스하지 않은 라이브러리입니다.
그래서 요점을 되풀이하다 :
- 과정은 파일 및 경로에 대한 전체 제어 권한이 있습니다. (cheked)
- 관리자처럼 실행 중입니다.
- 내 응용 프로그램에서 이진 모드로 dll을 열려고하면 작업에 문제가 없습니다.
- 실행합니다도에 내가 테스트 한 모든 OS (윈도우 8_64/XP_32/ 2008_32/7_64)하지만 2008 실패 R2 (64) 내가 가지고는 B.DLL 다시 설치, 이름 바꾸기 다시 다운로드하는 것을 시도했다 B.DLL 등의 동일한 경로에 프로그램을 putted하고 결과가 없습니다.
그래서이 시점에서 나는 "프로세스가 DLL을로드 할 수 없습니다"와 비슷한 서버상의 보안 문제라고 생각합니다.
예외 : http://i.imgur.com/NmB2Fth.png?1누군가가 나에게 어떤 솔루션을 제안 할 수 있습니다? 좀 더 좋을까요? 어디에? 나는이 같은 오류가 발생했습니다 DLL을 등록하려고하면
P.S 는 : Register DLL file on Windows Server 2008 R2
B의 종속성도 모두 설치 했습니까? –
예, 이전에 말했듯이 다른 모든 플랫폼에서도 잘 작동합니다. (아무것도 설치하지 않고) – Univers3
"임베디드 DLL 로더"해킹의 종류가 조만간 실패 할 운명입니다.그 위에 치사한 예외 처리를 추가하면 무엇이 잘못 될지 전혀 알 수 없습니다. "로드 실패"는 물론 도움이되지 않습니다. 이것은 오픈 소스입니다, 당신은 더 나아질 수 있습니다. –