2016-08-22 45 views
0

C#의 응용 프로그램에 문제가 있습니다. SaveFileDialog 개체 응용 프로그램에서 ShowDialog를 호출하려고하면 충돌이 발생합니다. 크래시를 일으키는 코드는 try catch 블록에 있지만 응용 프로그램을 크래킹하기 때문에 스택 추적을 얻을 수 없습니다.SaveFileDialog가 예외 코드 0xc0000005로 충돌 함

Faulting application name: test.exe, version: 1.0.0.1, time stamp: 0x56585459 
Faulting module name: wkscli.dll, version: 6.1.7601.17514, time stamp: 0x4ce795a7 
Exception code: 0xc0000005 
Fault offset: 0x00001e8f 
Faulting process id: 0x%9 
Faulting application start time: 0x%10 
Faulting application path: %11 
Faulting module path: %12 

때때로 오류있는 모듈 이름 Ntshrui.dll입니다 :

try 
     { 
      SaveFileDialog sfd = new SaveFileDialog(); 

      sfd.AddExtension = true; 
      sfd.RestoreDirectory = true; 
      string ext = Path.GetExtension(this.title); 
      sfd.Filter = "File type (" + ext + ")|*" + ext; 
      sfd.FileName = Program.NormalizeTitle(this.title); 

      DialogResult ds = sfd.ShowDialog(this); 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Exception: " + ex.StackTrace); 
     } 

오류 설명입니다.

이 코드는 수년 동안 다른 컴퓨터에서 잘 작동합니다. .Net 2.0 및 4.0을 사용하는 Windows 2008 R2에서 발생합니다. 무엇이 문제 일 수 있습니까?

+0

디버거에서 응용 프로그램을 실행하면 정확히 어디에서 오류가 발생합니까? –

+0

이 줄에는 DialogResult ds = sfd.ShowDialog (this); 하지만 고객 환경에 있기 때문에 디버거에서 실행할 수 없습니다. – iz25

+2

'0xc0000005'은 액세스 위반, 즉 잘못된 (기본) 메모리 액세스입니다. 정말 아무것도 될 수 있습니다, 심지어 코드는 당신이 당신의 물건을 부를 때 오랫동안 실행을 완료 한 원인 일 수 있습니다. 그러나 쉘을 다루는 동안 그것을 얻고 있기 때문에, 그것은 나쁜 제 3 자 쉘 확장이 될 수 있습니다. [this] (http://www.nirsoft.net/utils/shexview.html)과 같은 도구를 사용하여 셸 확장을 비활성화하고 오류가 사라지는 지 확인할 수 있습니다. –

답변

2

예외 코드 0xc0000005은 액세스 위반을 의미합니다. 다른 이름으로 저장 대화 상자가 표시 될 때 발생하므로 탐색기 셸 확장으로 인한 예외가 발생할 수 있습니다.

시스템에 설치되어있는 쉘 확장을 볼 수 있습니다 Autoruns 시스 인 터널에서, 또는 Nirsoft의 ShellExView를 사용

, 당신은 그들에게 하나씩을 해제 할 수 있습니다.

+0

그런 식으로 시도해 보겠습니다. – iz25

+0

@ john1020 : 물론 항상 확인해야 할 부분은 손상된 시스템 파일입니다. https://support.microsoft.com/en-us/kb/929833을 참조하십시오. –