2016-08-22 6 views
0

У меня проблема с приложением на C#. Когда я пытаюсь вызвать ShowDialog при попытке приложения объекта SaveFileDialog. Код, вызывающий сбой, находится в блоке try catch, но, поскольку он сдерживает приложение, я не могу получить трассировку стека.Аварийная ошибка SaveFileDialog с кодом исключения 0xc0000005

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); 
     } 

Это описание ошибки:

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.

Этот код отлично работает в течение многих лет на любой другой машине. Это произошло в Windows 2008 R2 с .Net 2.0 и 4.0. В чем может быть проблема?

+0

Если вы запустили приложение в отладчике, где именно это происходит? –

+0

На этой строке DialogResult ds = sfd.ShowDialog (this); Но я не могу работать в отладчике, потому что он находится в клиенте env. – iz25

+2

'0xc0000005' - нарушение прав доступа, то есть недопустимый (собственный) доступ к памяти. Может быть, что-то действительно, даже код может быть причиной, которая давно завершила выполнение, когда вы вызываете ваши вещи. Но поскольку вы получаете его во время работы с оболочкой, это может быть плохим сторонним расширением оболочки. Вы можете попробовать деактивировать расширения оболочки с помощью таких инструментов, как [this] (http://www.nirsoft.net/utils/shexview.html) и посмотреть, не исчезла ли ошибка. –

ответ

2

Код исключения 0xc0000005 означает нарушение прав доступа. Так как это происходит при отображении диалога сохранения в качестве исключения, это может быть вызвано расширением оболочки Explorer.

Использование Autoruns от Sysinternals, или NirSoft в ShellExView вы можете увидеть, какие оболочки расширения установлены на вашей системе, и вы можете отключить их один за одним.

+0

Я постараюсь так. – iz25

+0

@ john1020: И, конечно, всегда что-то проверять на поврежденные системные файлы, см. Https://support.microsoft.com/en-us/kb/929833 –

 Смежные вопросы

  • Нет связанных вопросов^_^