3

無料で配布する C# WinForms アプリケーションがあります。インスタンスがクラッシュしたときに、スタック トレースといくつかのハードウェアの詳細を受け取るように、最小限のクラッシュ サーバーをセットアップしました。私のユーザーの何人かは、私が再現できないクラッシュを経験したり、オンラインで解決策を見つけることができませんでした (これについては後で説明します)。

例外の種類は次のとおりです: System.UnauthorizedAccessException ところで: 私のアプリは管理者である必要はなく、通常のユーザーが実行できます。

例外メッセージ (英語で、他の 3 つの言語でもあります) は次のとおりです。

パス「6cbb4993-b127-4668-937e-f64c83b6e6b30.8Event」へのアクセスが拒否されました。

ご覧のとおり、パスはパスとしてはまったく見えず、GUID に似ています。GUID は変更されません。すべてのユーザーで同じです。なんらかの形でアプリケーションにバインドされていると思われますが、そのような値をファイル システムやレジストリで見つけることができませんでした。

スタック トレースは次のとおりです。

System.IO.__Error.WinIOError (Int32 errorCode、String MaybeFullPath)
で System.Threading.EventWaitHandle..ctor (Boolean initialState、EventResetMode モード、文字列名、Boolean& createdNew、EventWaitHandleSecurity eventSecurity)
で Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run (String[] commandLine)
VisualSEO.WinFormGui.Program.Main(String[] args) で

問題を経験したユーザーの中には、その後プログラムを正常に起動できたように見えるユーザーもいました (親切にも私に連絡してくれましたが、問題を再現する方法を教えてくれませんでした)。プログラムを使用するために登録を求めていないため、彼らに直接連絡することはできませんが、ハードウェア識別子で更新要求を追跡しているため、彼らが再び起動しなかったことはわかっています)。

もちろん、私は宿題をして、ウェブ中を検索しました。私が見つけた唯一の同様のものは次のとおりです。

エキスパート エクスチェンジ (URL を投稿できません) で、同様のエラー メッセージと異なる GUID で問題が発生しました。彼は Windows XP を使用しており、「再起動すると問題が解決した」と書いています。私が言ったように、一部のユーザーは正常に再起動できましたが、それは「解決策」ではありません。記録として、これまでに影響を受けたユーザーは次の OS を使用しています。

  • Win7 SP1
  • WinServer 2088 標準 SP2
  • Win8

ここで彼らは同様のエラーメッセージ
を持っていました 彼らはオープンソースプロジェクトであり、彼らが 行った修正
も見ることができました 彼らの修正は残念ながら実装が不十分な回避策です.彼らは言語が常に英語であると想定しています.例外をログに記録します。メッセージですが、ユーザーのインストールに英語の辞書もインストールされている場合にのみ機能し、多くの場合、そうではありません)また、彼らの診断は私の場合には役に立ちません:彼らは問題が彼らの別のインスタンスによって引き起こされたと想定していますクライアントは別のユーザー アカウント内で既に実行されています (その場合は正しいかもしれません)。私はそれをテストしましたが、それは私の場合ではありません。

根本的な原因を見つけることができません。私はアイデアが不足しています。過去に同様の問題を解決した人はいますか?

4

1 に答える 1

1

あなたの質問は C# とタグ付けされていますが、例外は VB のようです。あれは正しいですか?

プログラムの起動時に同様の例外 (GUID が異なる) が発生したため、 Process Monitorを使用して違反者を見つけました。私の場合、エンドユーザーのウイルス対策によってブロックされたレジストリ キーへの CLR アクセスが関係していました。

于 2013-03-05T16:50:38.873 に答える