|
■No63407 (魔界の仮面弁士) に追記 > 今回の調査結果を受けて、当方においても > を何パターンか実施し、後程こちらに結果を報告させていただきます。
皆さん、ありがとうございます。当方で試した限りでは、 VS2010 / 2012 の実行後に、SPI_GETFOREGROUNDLOCKTIMEOUT から 返される値が破損する『ことがある』 という曖昧な結果になりました。
以下、実験結果です。
============================ 今回は、「VB6」(Native/P-Code) および 「C#4 on .NET 2.0」(AnyCPU/x86, Debug/Release) という、6 種の EXE を用意した上での実験してみました。
その結果、開発環境を起動してからのデバッグ実行等ではなく、 コンパイルされた EXE を単に実行するだけであれば、 VB6 や .NET といった環境の差異は受けないようです。
また、SystemParametersInfo の戻り値はいずれも TRUE(1)固定、 Err.LastDllError / Marshal.GetLastWin32Error も常に 0 でした。 ---------------------------
☆の行は、MSサポートからの報告と一致する点、 ★の行は、今回新たに発生した事象です。
Visual Studio は単にスタートメニューから起動しただけで、 プロジェクトを開いたり作成したりといった作業は行っていません。
【Windows 7 Enterprise, x64 / Service Pack 1】 【VS2005 Team Suite / Service Pack 1 Update for Windows Vista】8.0.50727.867 (vsvista.050727-8600) 【VS2008 Development Edition / Service Pack 1 with QFE】9.0.30729.4462 QFE 【VS2010 Ultimate / Service Pack 1】10.0.40219.1 SP1Rel ・OS 起動直後は、6 種の EXE いずれもレジストリ値「20000(0x4e20)」を返してきた。 ・VS2005 起動(1回目)。期待値である「20000(0x4e20)」のまま。終了後も同値のまま。 ・VS2008 起動(1回目)。期待値である「20000(0x4e20)」のまま。終了後も同値のまま。 ☆VS2010 起動(1回目)。別の破損値「1635708(0x18f57c)」に変化。終了後も同値。 ★VS2010 起動(2回目)。上記破損値「1635708(0x18f57c)」のまま。終了後も同値のまま。 ★VS2010 起動(3回目)。上記破損値「1635708(0x18f57c)」のまま。終了後も同値のまま。 ・OS のログオフ後に再ログオンしたところ、元通り「20000(0x4e20)」を返してきた。 ★VS2010 起動(1回目)。期待値である「20000(0x4e20)」のまま。終了後も同値のまま。 ・VS2005 起動(1回目)。期待値である「20000(0x4e20)」のまま。終了後も同値のまま。 ・VS2008 起動(1回目)。期待値である「20000(0x4e20)」のまま。終了後も同値のまま。 ★VS2010 起動(2回目)。期待値である「20000(0x4e20)」のまま。終了後も同値のまま。 ・VS2005 起動(2回目)。期待値である「20000(0x4e20)」のまま。終了後も同値のまま。 ・VS2008 起動(2回目)。期待値である「20000(0x4e20)」のまま。終了後も同値のまま。 ☆VS2010 起動(3回目)。別の破損値「1503844(0x16f264)」に変化。終了後も同値。 ☆VS2010 起動(4回目)。別の破損値「1635852(0x18f60c)」に変化。終了後も同値。 ・再度、ログオフとログオンを実行。今度は起動後、HDDが落ち着くまでしばらく待つ。 ・この時点ではいずれもレジストリ値「20000(0x4e20)」を返す状態。 ・VS2005 起動(1回目)。期待値である「20000(0x4e20)」のまま。終了後も同値のまま。 ・VS2008 起動(1回目)。期待値である「20000(0x4e20)」のまま。終了後も同値のまま。 ☆VS2010 起動(1回目)。別の破損値「3863524(0x3af3e4)」に変化。終了後も同値。 ☆VS2010 起動(2回目)。別の破損値「1636532(0x18f8b4)」に変化。終了後も同値。 ★VS2010 起動(3回目)。上記破損値「1636532(0x18f8b4)」のまま。終了後も同値のまま。
【Windows 7 Ultimate, x64 / Service Pack 1】 【VS2010 Ultimate / Service Pack 1】10.0.40219.1 SP1Rel 【VS2012 Ultimate / RTM】11.0.50727.1 RTMREL ・OS 起動直後は、6 種の EXE いずれもレジストリ値「0(0x0)」を返してきた。 ・VS2012 起動(1回目)。別の破損値「1434656(0x15e420)」に変化。終了後も同値。 ・再度、ログオフとログオンを実行。SSD が落ち着くまで少し待つ。 ・この時点では、レジストリの期待値「0(0x0)」を返している。 ☆VS2010 起動(1回目)。別の破損値「3601620(0x36f4d4)」に変化。終了後も同値。 ・VS2012 起動(1回目)。別の破損値「2744824(0x29e1f8)」に変化。終了後も同値。 ★VS2010 起動(2回目)。上記破損値「2744824(0x29e1f8)」のまま。終了後も同値のまま。 ・VS2012 起動(2回目)。別の破損値「3859744(0x3ae520)」に変化。終了後も同値。 ・再度、ログオフとログオンを実行。SSD が落ち着くまで少し待つ。 ・この時点では、レジストリの期待値「0(0x0)」を返している。 ☆VS2010 起動(1回目)。別の破損値「3273300(0x31F254)」に変化。終了後も同値。 ★VS2010 起動(2回目)。上記破損値「3273300(0x31F254)」のまま。終了後も同値のまま。 ☆VS2010 起動(3回目)。別の破損値「2617836(0x27f1ec)」に変化。終了後も同値。
【Windows 8 Pro, x64 / RTM】 【Visual Studio 未インストール】 ・OS 起動直後、VB6 版はレジストリ値「20000(0x4e20)」を返してきた。 (.NET 2.0 版は、.NET Framework 3.5 未インストール環境のため稼働せず)
【Windows 8 Release Preview, x64】 【VS2012 Ultimate / Release Candidate】11.0.50522.1 RCREL ・OS 起動直後は、6 種の EXE いずれもレジストリ値「20000(0x4e20)」を返してきた。 ・VS2012 起動(1回目)。期待値である「20000(0x4e20)」のまま。終了後も同値のまま。 ・VS2012 起動(2回目)。別の破損値「4122904(0x3ee918)」に変化。終了後も同値。 ・VS2012 起動(3回目)。別の破損値「7856608(0x77e1e0)」に変化。終了後も同値。 ・VS2012 起動(4回目)。別の破損値「13625560(0xcfe8d8)」に変化。終了後も同値。 ・VS2012 起動(5回目)。別の破損値「10610760(0xa1e848)」に変化。終了後も同値。
|