[NT]SYSDIFF /INF が REG_DWORD の値に 10 進形式を使用する

この記事は、以前は次の ID で公開されていました: JP197161
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
SYSDIFF パッケージから .inf ファイルを作成するとき、.inf ファイルの値が 2147483647 より大きい場合 .inf ファイルを実行後、パッケージ内のレジストリ値が 0 になることがあります。
原因
SNAP ファイルに含まれるレジストリ エントリが、SYSDIFF /INF 構文を使用する .inf ファイルに書き込まれると、REG_DWORD 値が 10 進形式で書き込まれます。
たとえば、0x80000010 は 2147483664 として書き込まれます。

Setupapi.dll が、これを .inf ファイルで実行する際、10 進の REG_DWORD 値が 2147483647 を超過するかどうかをチェックし、0 をレジストリに書き込みます。
すべての 10 進値は、符号付きの整数とみなされるので、SETUPAPI はこの値をチェックします。このため、オーバーフローが発生します。
状況
この問題は Windows NT 4.0 日本語版のサービスパック 5 で修正されております。
なお、サービスパック 5 にて修正された問題の一覧は、以下の関連文書に記載されております。
文書番号 : 413592
タイトル : [NT]Windows NT 4.0 Service Pack 5 修正一覧。


関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 197161 (最終更新日 1999-05-26) をもとに作成したものです。

4.00
プロパティ

文書番号:197161 - 最終更新日: 02/06/2014 21:59:35 - リビジョン: 1.0

  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Server 4.0 Standard Edition
  • kbnosurvey kbarchive kbbug kbfix kbbug4.00 kbfix4.00 KB197161
フィードバック