以前、インターネット上で何かファイルを保存しようとするたびに、
表示されるダイアログ形式のエクスプローラにて、
毎回ファイルが昇順ではなく降順に表示されてしまうという事件が起きました。

右クリックから並び替えすれば元に戻るのですが、
エクスプローラでファイルを開くたびにまたアイコンが降順に並べ替えられてしまうという呪いです。
しかも、「すべてのフォルダに適用」をしてもならない。

それから、数ヶ月後、
直す方法をようやく見つけて、まあその場限りで直せたのですが、
なぜ直ったか、いまいちよく分からなかったので、もう一度調べてみようと思いました。

問題はエクスプローラの設定が保存されているレジストリ
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellState“です。
中は36byteのバイナリで記述されているのですが、この中には一体なにが書きこまれているのか、調べてみました。

typedef struct {
BOOL fShowAllObjects:1; 全てのファイルを表示する
BOOL fShowExtensions:1; 拡張子を表示する
BOOL fNoConfirmRecycle:1;  削除するときに確認を表示する
BOOL fShowSysFiles:1; システムファイルを表示する
BOOL fShowCompColor:1; 暗号化や圧縮されたNTFS圧縮ファイルをカラーで表示する
BOOL fDoubleClickInWebView:1; ダブルクリックでウェブ上に表示する
BOOL fDesktopHTML:1; アクティブデスクトップを使用する
BOOL fWin95Classic:1; enforce Microsoft Windows 95 Shell behavior and restrictions. 訳すの面倒
BOOL fDontPrettyPath:1; prevent the conversion of the path to all lowercase characters. 訳すの面倒
BOOL fShowAttribCol:1; 使用されていない
BOOL fMapNetDrvBtn:1; NetworkDriveを表示する
BOOL fShowInfoTip:1; ファイルやフォルダでポップアップで説明を表示する
BOOL fHideIcons:1; デスクトップのアイコンを隠す
BOOL fWebView:1; ウェブページとして表示する
BOOL fFilter:1; 使用されていない
BOOL fShowSuperHidden:1; OSのファイルを表示する
BOOL fNoNetCrawling:1; 自動で無効なネットワークドライブやプリンタを調べる
DWORD dwWin95Unused; 使用されていない
UINT uWin95Unused; 使用されていない
LONG lParamSort; ★アイコンを並び替える★
int iSortDirection; ★アイコンの名前でアルファベットにおいて、1で昇順ソート・-1で降順ソートを行う★
UINT version; 使用されていない
UINT uNotUsed; 使用されていない
BOOL fSepProcess:1; ウィンドウズのフォルダを個別のプロセスで起動する
BOOL fStartPanelOn:1; スタートメニューをクラシックスタイルではなく、XP風にする(XPのみ)
BOOL fShowStartPage:1; 使用されていない
BOOL fAutoCheckSelect:1; フォルダをクラシックスタイルではなく、Vista風にする(Vistaのみ)
BOOL fIconsOnly:1; サムネイルを利用せずに、一般的なアイコンのみ表示する(Vistaのみ)
BOOL fShowTypeOverlay:1; 実行ファイルのアイコン?サムネイルのこと?なんたらかんたら(Vistaのみ
UINT fSpareFlags:13; 字あまり
} SHELLSTATE, *LPSHSHELLSTATE;

SHELLSTATE Structure ()より

脱線しますが、「UINT fSpareFlags:13;」このビットフィールド
データがどのようになっているのかよく分からない

それで話戻りますが、この中のソート関係の設定、
「lParamSort」と「iSortDirection」が、その変なことを起こさせる原因になると思う。

一応この2つの設定は4byteだから、簡単に目でなおせそうな気がする。
0でデフォルトだから、
治したい人は、この2つの項目を両方とも0にしてみるといいかもしれないです。

あと上の方と下の方のBOOL型のパラメータは、
ビットフィールド使ってるので、レジストリエディタから直すの激しく面倒。

時間があったので、HSPでこのレジストリを読み込んだり書き込んだり内容を表示するのを書いてみた。
そしたら、実際は拡張子は表示させているのに「fShowExtensions」がFALSEになっていたり、
未使用のはずの「dwWin95Unused」や「fSpareFlags」によくわからない数字が書き込まれていた。

うーむ。私のソフトのバグなのかなー
まだ先月にWindowsインストールしたからレジストリはあんまり汚れていないと思うのですが。
ShellStateチェックをダウンロード

関連なページ
ファイルやフォルダの並び順が変になってしまった
ファイルの並び順がようやく直った troublog/ウェブリブログ
アイコンの並び順がおかしい(きりしま屋)
フォルダ内のファイルの昇順・降順について – 教えて!goo
ファイルの表示が逆になる
コモンダイアログボックスの並び順が逆順になって戻らない。。 – 教えて!goo
コモンダイアログボックスの並び順が逆順になって戻らない。。 -OKWave

関連記事

  • マップオンデマンドの地図更新でパスワードが入力できないマップオンデマンドの地図更新でパスワードが入力できない 車を購入時にカーナビとしてNSZT-W61Gを付けたのですが、 カーナビ購入してから3年間はマップ情報のバージョンアップが無料ということで、 バージョンアップをしようとしました。 バージョンアップ方法の流れ 1. 購入時についていた「マップオンデマンドセットアップディスク」のDVDでセットアップツールをインストール 2. 「GAZOO」を無料でユーザー登録(「TOYOTA […] Posted in 雑記
  • HSPで高DPI対応ソフトを作ろうHSPで高DPI対応ソフトを作ろう こんにちは! 久しぶりにHSPの記事を書きたいと思います! 今回は、HSPの高DPI対応です。 はじめに 高DPIとはなんぞや、という説明をします。 昔のディスプレイは、1ドットのサイズが細かくないため、 1ピクセル=1ドットのような設計がほとんどでした。 そして、1ピクセルの大きさも、どのディスプレイもだいたい同じようなサイズ(96dpi)でし […] Posted in プログラミング
  • Google Chromeをインストールしたい!Google Chromeをインストールしたい! Google Chromeのインストールに失敗することがあります。 例えば通常、インストーラー「ChromeSetup.exe」を起動すると 初期化しています… インターネットに接続しています… Google Chrome […] Posted in 雑記
  • 個人的なQ&A個人的なQ&A Q1.無線LAN親機 WZR-HP-AG300H にブリッジ機能時にアクセスしたい。A1. 『<ルーター機能無効時>DHCPサーバーから自動取得』と説明書に書いてありますが、WZR-HP-AG300H は、192.168.11.100 に設定されます。多分。 ちなみに『arp -a』でもIPアドレスを知ることができます。自分のIPアドレスが、192.168.11.* […] Posted in 雑記
  • Google音声認識で流れる音Google音声認識で流れる音 iPod […] Posted in 雑記
  • Google サジェストを使ってみるGoogle サジェストを使ってみる Google サジェストというものをご存知だろうか。 実は結構前からあるのだが多分かなりの人がご存知ないであろう「Google […] Posted in 雑記