【WinXP】フォルダの読み取り専用属性の怪

フォルダを移動しようとしたら「他の人が使ってますよ〜」MSGが出たんで、共有とか他アプリが使っていないことを再確認。
でも、何度やっても「使ってま〜す」
で、読み取り属性を確認したら、■になっていたんで、□にしてOKして、再度移動しようとしたが、やはり移動できず。
再度プロパティを確認するも、□にしたはずの読み取り属性が■に戻っている。
なんだこりゃ、というわけで、調査開始。

【リソースを当たる】

手始めにWinFAQをチェック。

WinFAQの記事を要約

XPではプロパティからフォルダの読み取り属性は設定不可
コマンドプロンプトからattribコマンドを使って変更

ということだ。

が、デジタルARENA(日経BP)にこんな記事が。

デジタルARENAの記事を要約

 【設定】
 0.チェックボックスは■=オフ
 1.チェックボックスクリック→□=オフ
 2.さらにクリック(チェック)=オン
 【解除】
 0.チェックボックスは■=オン
 1.チェックボックスクリック→□=オフ

いずれにしても、最初に開いた時点では、 読み取り専用属性がオンだろうがオフだろうが、■表示になるのは 変わりがないらしい。なんだそりゃ。

ここはMicrosoftに確認するのが一番だろう。

フォルダのプロパティで読み取り専用のチェック ボックスが緑色で反転表示する

まずは、フォルダの読み取り属性表示がいつも■になる現象の説明、なんですが・・・
えと・・・知りたいのは、その原因と対処方法なんですが、見当たらないですね。
・・・仕様ということでしょうか?
とりあえず、Windows XPクラシックスタイルなら発生しないそうです。

フォルダの読み取り専用属性やシステム属性を表示または変更できない

結局、上記WinFAQの通り(attribコマンド使用)にやりなさい、ということらしい。
あと、フォルダの読み取り属性は、フォルダの移動や名前の変更には関係ないらしい。
つまり、今回の調査の発端となった、移動ができない、というのには関係なかったらしい(汗

つか、実際にやってみるのが一番早いよな(笑)

【実験】

c\:shiibatestというテストフォルダを作成。
さらにその下にtestというフォルダを作成。これが今回の実験対象。
ついでにテストファイル(test.txt)も作成して様子を見る。
まずは初期状態で。
初期状態

C:\>dir c:\shiibatest
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は B030-3B53 です

 c:\shiibatest のディレクトリ

2005/06/17  14:55    <DIR>          .
2005/06/17  14:55    <DIR>          ..
2005/06/17  14:55    <DIR>          test
2005/06/17  14:55                 0 test.txt
               1 個のファイル                   0 バイト
               3 個のディレクトリ  25,323,663,360 バイトの空き領域

C:\>dir c:\shiibatest /A:R
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は B030-3B53 です

 c:\shiibatest のディレクトリ

ファイルが見つかりません

フォルダ、ファイルともにプロパティから変更してみる。
読み取り属性をチェック状態にして・・・
プロパティで読み取り属性オン

C:\shiibatest>dir c:\shiibatest /A:R
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は B030-3B53 です

 c:\shiibatest のディレクトリ

2005/06/17  14:42                 0 test.txt
               1 個のファイル                   0 バイト
               0 個のディレクトリ  25,323,659,264 バイトの空き領域

設定後
ファイルは問題なく読み取り属性(R)になったが(当然といえば当然)、 フォルダは何の変化も無し。・・・日経BP、ダメぢゃん。
で、フォルダはおとなしくattribを使って変更。

C:\>attrib +R c:\shiibatest\test

で、確認。

C:\>dir c:\shiibatest /A:R
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は B030-3B53 です

 c:\shiibatest のディレクトリ

2005/06/17  14:55    <DIR>          test
2005/06/17  14:55                 0 test.txt
               1 個のファイル                   0 バイト
               1 個のディレクトリ  25,324,507,136 バイトの空き領域

attrib適用後
無事、読み取り専用になりました。
ここで、testフォルダをリネームしてみる。
・・・普通にできちゃった。

C:\>dir c:\shiibatest /A:R
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は B030-3B53 です

 c:\shiibatest のディレクトリ

2005/06/17  14:55                 0 test.txt
2005/06/17  14:55    <DIR>          test2
               1 個のファイル                   0 バイト
               1 個のディレクトリ  25,324,052,480 バイトの空き領域

リネームしても読み取り属性は引き継がれます。
この状態でファイル削除を行ってみましょう。
まずはエクスプローラから。

エクスプローラで削除
あっさりと削除されてしまいました。
今度は同じ条件に戻してrmコマンドで削除。

C:\>rm c:\shiibatest\test2
アクセスが拒否されました。

なんですとー!!!
つまり、この状況下ではバッチでファイル削除はできないようです。

なお、読み取り属性の解除は設定時と同様、プロパティの項目による設定はできず、

C:\>attrib -R c:\shiibatest\test2

で解除可能でした。

ちなみに、上記記事(326549)によると、

読み取り専用属性とシステム属性は、 Windows により表示がカスタマイズされたシステム フォルダ (たとえば、My Documents、Favorites、Fonts、Downloaded Program Files フォルダ)、 またはユーザーがフォルダの [プロパティ] ダイアログ ボックスで [カスタマイズ] タブを使用してカスタマイズしたフォルダなど、 フォルダが特別なフォルダであるかどうかを、エクスプローラで調べるためにだけ使用されます。 このため、エクスプローラでは、フォルダの読み取り専用属性とシステム属性の表示と変更が許可されません。

だそうで。
でも、attribで読み取り属性つけると、エクスプローラでもちゃんと[R]表示されるのだけど、あれは違うの?
あと、

注 : Windows の以前のバージョンの一部では、 フォルダの [プロパティ] ダイアログ ボックスで、 フォルダの読み取り専用属性を変更できますが、 エクスプローラでシステム属性を変更することは、 どのバージョンの Windows でも許可されていません。

だそうで。「Windowsの以前のバージョンの一部」ってどれのことだろう?
Win2Kではフォルダの読み取り属性を変更できたような気が。その前はどうだったかな。あまり覚えていないや。

カスタマイズと読み取り属性の関係を一応、確認。
新しいテストフォルダtest01を作成して、 プロパティのカスタマイズタブでアイコン変更。
アイコン変更
すると、エクスプローラでtest01の属性がRに。
属性が変わった

dirコマンドでも、

C:\>dir c:\shiibatest /A:R
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は B030-3B53 です

 c:\shiibatest のディレクトリ

2005/06/17  14:55                 0 test.txt
2005/06/17  15:26    <DIR>          test01
2005/06/17  14:55    <DIR>          test2
               1 個のファイル                   0 バイト
               2 個のディレクトリ  25,324,011,520 バイトの空き領域

ついでにこれにもrmコマンドかけてみる。

C:\>rm c:\shiibatest\test01
アクセスが拒否されました。

どうやらフォルダをカスタマイズすると、強制的に読み取り属性になるらしい。

ちなみにプロパティからのカスタマイズでR属性になったのは、アイコンを変更した時だけ。
フォルダの種類や画像を変更しても、何も変わりませんでした。(なぜ?)
ついでに、カスタマイズ時にできるDesktop.iniを削除しても、R属性は解除されず。
解除にはattribを使うしかないようで。

おもしろいので、test01フォルダにできたDesktop.iniを
test01の設定ファイル
↓新たに作ったフォルダtest02にコピーしてみる。
test02にコピー
↓すると・・・
属性を確認
・・・何も変わんないよ。
で、attribでtest02を読み取り属性にしたら・・・

C:\>attrib +R c:\shiibatest\test02

読み取り属性になった
アイコンが変わった。

つまり、

[フォルダ内にDesktop.ini] + [読み取り属性]
 ⇒ カスタマイズフォルダ

ということらしい。何それ

それから、先に「Windows XPクラシックスタイルなら発生しない」と書いたが、これも検証してみた。
結論から言うと、画面スタイルは関係なかったよ・・・
強いて言えば、ルナモードでは■が緑色、クラシックスタイルでは灰色のチェック、くらいの差かな?
ん? 例の記事のタイトル、よく見たら、

フォルダのプロパティで読み取り専用のチェック ボックスが緑色で反転表示する

だよ・・・orz  ソウイウコトカ そりゃ、クラシックスタイルでは緑色にはならないよなぁ・・・
で、もう一度記事を読み直してみたら、

概要
Windows XP のエクスプローラより、フォルダのプロパティの属性を確認すると、 既定では [読み取り専用] のチェック ボックスがオフの状態で緑色で反転表示されています。

「オフの状態で緑色で反転表示」って、それ、オフじゃないですから・・・!

【まとめ】

要は、

WindowsXPのフォルダの「読み取り属性」はいわゆる読み取り属性にあらず

というところでしょうか。
でも、rmコマンドが使えなかったり、中途半端に読み取り属性なのが・・・
システムフォルダやカスタムフォルダを特別属性にするに当たって、 新たに属性追加するよりは、と「読み取り属性」を使いまわしたんでしょうね。
でも、結果的にこれが裏目に出ているような。

そうそう、フォルダの移動ができなかった件については、PCを再起動したら直りました。
よく分からんけど、タスクが残っちゃっていたのかな?

[05/06/22 追記1]
フォルダを複数選択した場合、プロパティの読み取り属性の表示方法が異なります。
・属性無しのもののみ選択した場合はチェック無し
・読み取り属性のもののみ選択した場合はチェック有り
・混在で選択した場合は■
要はファイルと同じ表示になるのですが、ここのチェックを変更しても、 選択フォルダの読み取り属性が変わるわけではありません。
属性変更をしたいときは、やはりattribを使用する必要があるようです。

[05/06/22 追記2]
ご参考までに。Win2000以前のバージョンの場合、こういうことらしいです。
フォルダから読み取り専用属性を削除できない

[08/04/17 追記3]
ここまで書いておきながら、アップするのをすっかり忘れていました(汗)
(このリソース発見時には、別の人が書いたものだと思ったよ・・・)
もういい加減放置でもいいかとも思ったけど、せっかく書いたものだし、アップしておくことにします。

[11/07/02 追記4]
コメントつけるファイル間違えてたよorz
6年間もこのままだったなんて、なんてお恥ずかしい……
驚いたことにまだアクセスあるみたいなんで、一応修正。


Copyright © 1998-2005 shiiba All Rights Reserved.
Contents of this site and the sub-directories' are mainly written in Japanese.

1