ファイルの順番が常に降順になってしまうときは

雑記
スポンサーリンク

はじめに

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

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

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

本事象につきまして、2020年8月にももお様にコメントで情報を頂きました。ありがとうございます!

> エクスプローラを起動して,並び順を自分の好きな順に変å更する。次に「Ctrl」キーを押しながらウィンドウ右上の「×」印をクリックしよう。ウィンドウを閉じれば,この設定が保存される。この操作は,多くのWindowsアプリケーションで使用されている「ファイルを開く」,「ファイルを保存する」ダイアログボックスでも反映される(ただし,設定の保存はエクスプローラ上のみ)。

引用 ITmedia : エクスプローラ上で好みのファイル順を記憶させたい

ここに記載してある内容は、2008年3月時点のWindows XPでの話となります。最新のOSでは、原因が違う可能性が御座いますのでご了承ください。

原因について

設定が記載されたレジストリ

問題はエクスプローラの設定が保存されている以下のレジストリでした。

\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つの設定は、LONG型と、int型であることから、両方とも4byteの情報となっており、ビットフィールドを用いなくても表現できるデータいます。そのため、修正する場合は直接数値をいじれば治るかと思います。デフォルトの値は0のため、この2つの項目を両方とも0にしてみるとよいです。

上下にあるBOOL型は、:1とあるようにビットフィールドが必要であるため、編集は少し面倒そうです。

設定を実際に確認してみる

ShellStateチェックをダウンロード

上のソフトは、レジストリを読み書き、内容表示するソフトウェアをHSP言語で作ってみたものです。

実際は拡張子は表示させているのに「fShowExtensions」がFALSEになっていたり、未使用のはずの「dwWin95Unused」や「fSpareFlags」によくわからない数字が書き込まれていました。うーん。私のソフトのバグなのかな・・・。まだ先月にWindowsインストールしたからレジストリはあんまり汚れていないと思うのですが。

参考にしたサイト

コメント

  1. ももお より:

    お疲れさまです。
    僕のマシンも最近まで「ファイルを開く」や「ファイルを保存」ダイアログボックスを開いたとき、いつもファイル名の降順に並んでいる現象が出ていましたが、解消しました。

    やり方はとてもあっさりしてて、
    http://www.itmedia.co.jp/help/tips/windows/w0101.html

    >通常のウィンドウにて、並び順を自分の好きな順に変更する
    >「Ctrl」キーを押しながら右上の「×」印をクリックして閉じる
    >設定が保存される

    これだけです(笑)

    2000年10月公開のITmediaの記事ですので、あなたがブログを書かれる何年も前にあった解決法でした。

    • なたで より:

      ももお様
      そんな簡単な方法で直ったんですね〜!
      情報ありがとうございます!
      たしかこの現象はWindowsXP時代に遭遇して、当時調べたのですが原因が分からず、結局レジスタをいじることで直したんですね〜。
      もしかしたら、手違いでそういった操作をしていたかもしれませんね・・・

タイトルとURLをコピーしました