2016-08-22 89 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);しかし、私はデバッガで実行することはできません原因は、顧客のenvです。 – iz25

+2

「0xc0000005」はアクセス違反、すなわち無効(ネイティブ)メモリアクセスです。実際には何でもかまいません。たとえあなたがあなたのものを呼び出すと、コードが実行を完了した原因になることさえあります。しかし、シェルを扱っている間にそれを取得しているので、悪いサードパーティのシェル拡張である可能性があります。 [this](http://www.nirsoft.net/utils/shexview.html)のようなツールを使ってシェル拡張機能を無効にして、エラーが消えるかどうか確認することができます。 –

答えて

2

例外コード0xc0000005はアクセス違反を意味します。 [名前を付けて保存]ダイアログが表示されたときに発生するので、エクスプローラシェル拡張によって例外が発生する可能性があります。

あなたのシステムにインストールされているシェル拡張を確認でき Autoruns Sysinternalsの、またはNirsoftの ShellExViewを使用して

、あなたはそれらを一つ一つを無効にすることができます。

+0

私はそのようにします。 – iz25

+0

@ john1020:もちろん、常に壊れているシステムファイルのチェックが必要です。https://support.microsoft.com/en-us/kb/929833 –

関連する問題