現在オフラインです。再接続するためにインターネットの接続を待っています

32 ビット プロセスから RegConnectRegistry() を実行した後、リモート レジストリ サービスの停止を行うと、ハンドル リークが発生する

Windows XP のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Windows XP のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

Windows Server 2003 のサポートは 2015 年 7 月 14 日で終了しています

Windows Server 2003 のサポートは 2015 年 7 月 14 日で終了しています。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

現象
32 ビット プロセスから RegConnectRegistry() を呼び出して任意のレジストリ ハンドルに接続した後、リモート レジストリ サービスの停止を行うと、RegConnectRegistry() を呼び出した 32 ビット プロセスの内部に解放されないハンドルが 1 つ残ります。
このハンドルは、RegCloseKey() を呼び出しても解放されないため、32 ビット プロセス内でハンドル リークが発生します。

なお本現象は、32 ビット版ならびに 64 ビット版の Windows 上で動作する 32 ビット プロセスでのみ発生し、64 ビット版の Windows 上で動作する 64 ビット プロセスでは発生しません。
原因
RegConnectRegistry() 呼び出しが成功すると、呼び出し側の 32 ビット プロセス内でいくつかのハンドルが作成されます。
このハンドルは、RegCloseKey() が呼び出された際に、Windows 内部の Remote Procedure Call (RPC) 側で解放される設計になっています。
ところが RegConnectRegistry() 呼び出しが成功した後に、リモート レジストリ サービスが停止された場合は、RPC 側でこのハンドルを参照してクローズすることができなくなります。
そのため、RegConnectRegistry() を呼び出した 32 ビット プロセス内で、ハンドル リークが発生します。

64 ビット プロセスは、Windows 内部の動作が 32 ビット プロセスとは異なるために、リモート レジストリ サービスが停止された場合でも、ハンドル リークが発生しません。
回避策
リモート レジストリ サービスは、頻繁な停止・再開を行わずにご利用ください。
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2591693 - 最終更新日: 09/20/2016 09:39:00 - リビジョン: 2.0

Microsoft Windows XP Home Edition, Microsoft Windows XP Professional, Microsoft Windows XP Professional x64 Edition, Microsoft Windows Server 2003, Enterprise Edition (32-bit x86), Microsoft Windows Server 2003, Enterprise x64 Edition, Microsoft Windows Server 2003, Datacenter Edition (32-bit x86), Microsoft Windows Server 2003, Datacenter x64 Edition, Microsoft Windows Server 2003, Standard Edition (32-bit x86), Microsoft Windows Server 2003, Standard x64 Edition, Windows Vista Business, Windows Vista Business 64-bit edition, Windows Vista Enterprise, Windows Vista Enterprise 64-bit edition, Windows Vista Home Basic, Windows Vista Home Basic 64-bit edition, Windows Vista Home Premium, Windows Vista Home Premium 64-bit edition, Windows Vista Ultimate, Windows Vista Ultimate 64-bit edition, Windows Server 2008 Datacenter, Windows Server 2008 Enterprise, Windows Server 2008 Standard, Windows 7 Enterprise, Windows 7 Home Basic, Windows 7 Home Premium, Windows 7 Professional, Windows 7 Ultimate, Windows Server 2008 R2 Datacenter, Windows Server 2008 R2 Enterprise, Windows Server 2008 R2 Standard

  • kbbug kbnofix kbexpertiseadvanced KB2591693
フィードバック