5

更新プログラム3059317を適用する直前に正常に動作する MFC ベースのプログラムがあります。

MS15-060: Microsoft コモン コントロールの脆弱性により、リモートでコードが実行される: 2015 年 6 月 9 日)

アップデートはComctl32.dll新しいバージョンに置き換わります。

この更新プログラムを適用した後、ダイアログを開くと、プログラムがハングするだけです。すべてのダイアログが影響を受けるわけではないようですが、プログラムをクラッシュさせることなく、印刷プレビューが一貫してハングします。無反応になるだけです。

この問題を回避する方法を見つけるために、この問題をデバッグする方法がわかりません。プログラムがハングしたときにメモリ ダンプを作成すると、次のスタック トレースが得られます。

comctl32.dll!751f8505() 
Xxx.exe!CWnd::WindowProc(unsigned int message, unsigned int wParam, long lParam) Line 2095 + 0x13 bytes
Xxx.exe!AfxCallWndProc(CWnd * pWnd, HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam) Line 285
Xxxx.exe!AfxWndProc(HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam) Line 434 + 0x10 bytes
user32.dll!76aafd72() 
user32.dll!76aa84de() 
user32.dll!76aafd72() 
user32.dll!76aa9f8d() 
ntdll.dll!77dd5a7e() 
user32.dll!76aaa2af() 
comctl32.dll!75249cfb() 
comctl32.dll!751fb559() 
user32.dll!76aafd72() 
user32.dll!76aafe4a() 
user32.dll!76ab09d3() 
user32.dll!76abb759() 
Xxx.exe!CWnd::DefWindowProcA(unsigned int nMsg, unsigned int wParam, long lParam) Line 1116 + 0x7 bytes
Xxx.exe!CWnd::Default() Line 315 + 0x13 bytes
Xxx.exe!CParsedEdit::OnPaint() Line 1603
Xxx.exe!CBannerEdit::OnPaint() Line 368

それで、私たちは確かに立ち往生してComctl32.dllいます-今何ですか?

ちなみに、場合によっては、アップデートをアンインストールすると問題が解決することがあります。

アップデート

いずれの場合も、Aero をオフにすると常に問題が解決します。また、KB3059317 は、この奇妙な動作を示す 2015 年 6 月の Windows Vista の唯一の更新プログラムではないようです。

4

2 に答える 2

2

Areo Vista では、アプリの少なくとも 1 つのダイアログで失敗します。ダイアログがペイントされていないだけです。存在していますが、目に見えないだけです。

Vista Aero でこの問題を解決するには、 およびメソッドのSetRedraw()実行中に関数への呼び出しをすべて削除します。OnInitDialog()OnSize()

SetRedraw(TRUE)少なくともこれら 2 つのケースでは、(プラスの) 効果はないようです。

于 2015-06-25T06:27:47.263 に答える
0

ListView コントロールのカスタマイズされたバージョンを使用する .NET 4 で記述されたカスタム プログラムでも同じ問題が発生します。プログラムはハングせず、「保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています。」というエラーが表示されます。この更新プログラムをアンインストールした後、すべて問題ありません。

于 2015-06-22T15:20:58.457 に答える