こんにちは、阿久津です。昨日とあるソフトウェアのソースコードをコンパイルしなければならず、Visual Studio 2010をWindows 8.1上にインストールしていました。これ自体は特に問題はありません。悩まされたのは、Microsoft Windows SDK for Windows 7 and .NET Framework 4(Windows SDK for Windows 7.1)の存在です。同SDKはセットアップ形式でファイルを展開するタイプのインストーラーを使用しますが、何度やっても正常に終了しません。

既に古いソフトウェアに部類されるため、何らかのヒントがあるのでは、対応策を検索してみると、OSにインストールされているMicrosoft Visual C++ 2010 x86 Redistributableと、Microsoft Visual C++ 2010 x64 Redistributableを削除すればよいとのこと。しかし、この対処法を試しても同SDKのインストールは正しく終了しません。今度はインストール時にVisual C++ Compilersを選択しなければよい、とのことでした。

この時点でVisual Studio 2010には、Service Pack 1を適用済みでしたが、そのせいか同じ対処方法を試してもインストールは完了しません。仕方なく、開発環境をすべて削除した状態で、イチからインストールを試すことにしました。Visual Studio 2010をインストールしてから、今度は同SDKをWebインストーラーではなくISO形式の64ビット版を選択し、難なくクリアしました。

今となっては検証できませんが、Webインストーラーで64ビット用コンポーネントをうまく展開できないケースがあったのかも知れません。これで問題なく開発環境がそろいましたが、今度はVisual Studio 2010 Service Pack 1が適用できません。日本マイクロソフトの公式ブログ「Visual Studioサポートチーム」の記事によると、Service Pack 1が適用できないはポピュラーなトラブルのようです。

リンク先の対応策で確かに回避できるトラブルですが、構成コンポーネントを一つでも変更すると、Visual Studio 2010の構成変更は再インストール/修復を実行しなければなりません。また、OSの再起動も求められるため、準備だけでも一苦労。一連の作業を終えるのに丸一日を必要としました。

既にVisual Studioは2012、2013がリリースされている状態ですから、Microsoftに改善を求めるのも酷なような気がします。しかし、もう少し柔軟なトラブル回避方法があればユーザーも救われるのに、と思いつつ、MinGW(GNUベースの開発環境)をインストールする際の簡単さに感謝するよい機会でした。

さて、Windows 8/8.1では、ファイルのコピーや移動時に現れるダイアログのデザインを変更し、転送レートや処理中のファイル名などが詳しく確認できるようになりました。初期状態ではシンプルなダイアログですが、<詳細情報>をクリックすることで、ダイアログの内容が展開されます。この状態で<詳細情報の非表示>をクリックすると元の状態に戻る仕組みなのはご覧のとおり(図01~02)。

図01 ファイルコピー中のダイアログ。この状態で<詳細情報>をクリックします

図02 するとダイアログの表示内容が拡張され、転送レートなど詳細情報が確認できます

同ダイアログの展開状態は、HKEY_CURRENT_USER\Software\Microsoft\Windows \CurrentVersion\Explorer\OperationStatusManagerキーにあるDWORD値「EnthusiastMode」が管理しており、データが「0」の場合はシンプルなダイアログ。「1」の場合は展開された状態となります。

どちらが便利か否かは個人的な好みに左右されますが、常に展開した方がOSの動作を確認できるのではないでしょうか。仮に同ダイアログを邪魔に感じても、最小化してしまえば済む話です。そこで、今週は常にファイル操作ダイアログを展開するチューニングをお送りしましょう。

1. ファイル操作ダイアログを展開した状態で処理を終えます。
2. 管理者権限でレジストリエディターを起動します。
3. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer \OperationStatusManagerキーを開きます。
4. OperationStatusManagerキーのセキュリティの詳細設定ダイアログを起動します。
5. <継承の無効化>ボタンでアクセス許可の変換処理を行います。
6. 使用中のユーザーアカウントに対するアクセス権限を「読み取り」のみとします。
7. 各ダイアログを閉じてから、レジストリエディターを終了します。

これでチューニングが完了しました(図03~14)。

図03 任意のファイルをコピーし、ダイアログを展開した状態で処理を終えます

図04 [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力して<OK>ボタンをクリックします

図05 レジストリエディターが起動したら、 HKEY_CURRENT_USER\Software\Microsoft\Windows \CurrentVersion\Explorer\OperationStatusManagerまで、キーをたどって開きます

図06 OperationStatusManagerキーを右クリックし、メニューから<アクセス許可>をクリックして選択します

図07 ダイアログが起動したら、<詳細設定>ボタンをクリックします

図08 さらにダイアログが起動したら、<継承の無効化>ボタンをクリックします

図09 確認をうながすメッセージが現れます。<継承されたアクセス許可をこのオブジェクトの明示的なアクセス許可に変更します>をクリックしてください

図10 次に自身のアカウント選択した状態で<編集>ボタンをクリックします

図11 <フルコントロール>をクリックしてチェックを外し、<OK>ボタンをクリックします

図12 これで元のダイアログに戻り、ユーザーのアクセス権限が「読み取り」に変更されました。<OK>ボタンをクリックします

図13 こちらのダイアログでも、自身のユーザーアクセス権限は「読み取り」のみ許可された状態となります。<OK>ボタンをクリックしてください

図14 <×>ボタンをクリックして、レジストリエディターを終了させます

早速結果を確認してみましょう。先ほどと同じようにファイルをコピーし、ダイアログの表示内容をみると、通常は展開された状態になるので、<詳細情報の非表示>をクリックしてダイアログを閉じます。続いて同じ操作を再び行う、チューニング前はシンプルなダイアログになっていたのが、再び展開された状態でコピー操作が始まります(図15~17)。

図15 チューニング後にファイルをコピーしますと、ダイアログが展開された状態となります

図16 <詳細情報の非表示>をクリックし、コピー処理が終えるまでお待ちください

図17 再びファイルをコピーしますと、図15と同じ展開された状態でダイアログが現れます

本来であれば<詳細情報><詳細情報の非表示>をクリックすることで、DWORD値「EnthusiastMode」のデータが変化しますが、本チューニングにより書き換えを抑制するため、(今回の操作では)常に展開された状態となるのです。そのため、同じキー内にあるDWORD値「ConfirmationCheckBoxDoForAll」に対しても影響を及ぼしますが、同値がどのような動作に影響しているか確認できないため、ご注意ください。

また、本チューニング結果を破棄する場合は、OperationStatusManagerのアクセス許可ダイアログで自身のアカウントを選択し、「フルコントロール」に対して<許可>を与えます。

それでは、また次号でお目にかかりましょう。

阿久津良和(Cactus