1

로컬로 잘 실행되는 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

+1

B의 종속성도 모두 설치 했습니까? –

+0

예, 이전에 말했듯이 다른 모든 플랫폼에서도 잘 작동합니다. (아무것도 설치하지 않고) – Univers3

+0

"임베디드 DLL 로더"해킹의 종류가 조만간 실패 할 운명입니다.그 위에 치사한 예외 처리를 추가하면 무엇이 잘못 될지 전혀 알 수 없습니다. "로드 실패"는 물론 도움이되지 않습니다. 이것은 오픈 소스입니다, 당신은 더 나아질 수 있습니다. –

답변

2

해결책은 간단했다.

내가 이벤트 뷰어라는 매우 유용한 도구를 사용한 (시작 -> Execute-> eventvwr.exe를) 나는 새로운 오류 이벤트는 Windows 로그 -> 응용 프로그램에 보여 주었다 내 응용 프로그램을 시작 :

http://www.microsoft.com/en-us/download/details.aspx?id=5582

:
Activation context generation failed for "C:\Temp\APP\myfile.dll". 
Dependent Assembly Microsoft.VC90.CRT,processorArchitecture="x86", 
publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" could not be found. 
Please use sxstrace.exe for detailed diagnosis. 

빠른 검색 및 결과는

일단이 패키지를 설치 (내 응용 프로그램이 32 비트 응용 프로그램 풀에서 작동하기 때문에 86) 서버가 Visual C++ Runtime for x86 필요하다고했다

모든 것이 매력처럼 작동했습니다.

시간이 절약되는 데 도움이되기를 바랍니다.

관련 문제