DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ファイル属性について

環境/言語:[WindowsXPpro,VB.NET2005,.NET Framework(2.0.50..)]
分類:[.NET]

ファイル属性の読み取り専用のチェックについて、
あるフォルダが読み取り専用かどうかをチェックしたいと思っておりますが、
正常に処理ができません。
ファイルなら正しく出来るのですが、フォルダの場合は何か違いがあるのでしょうか。
下記コード「C:\test(フォルダ)\」は読み取り専用フォルダです。

  Imports System.IO
Dim path As String = "C:\test\" ' ディレクトリ

' ファイル属性を取得
Dim fas As FileAttributes = File.GetAttributes(path)

' 読み取り専用かどうか確認
If (fas And FileAttributes.ReadOnly) = FileAttributes.ReadOnly Then
Console.WriteLine("読み取り専用です。")

Else
Console.WriteLine("読み取り専用ではありません。")

End If
■No17867に返信(Yさんの記事)
> ファイルなら正しく出来るのですが、フォルダの場合は何か違いがあるのでしょうか。
フォルダって読み取り専用属性なんてあったっけ?
灰色にしかならないような。
> ' 読み取り専用かどうか確認
> If (fas And FileAttributes.ReadOnly) = FileAttributes.ReadOnly Then

If fas = FileAttributes.ReadOnly Then

でないかい?
ちゃんとディレクトリかも見たければ、

If (fas = FileAttributes.Directory) AND _
(fas = FileAttributes.ReadOnly) Then

ってしてみるとか
どのように読み取り専用属性をつけていますか?
エクスプローラでフォルダ右クリックでプロパティでチェックを入れても読み取り属性はつけれません(Xp)

参考
http://homepage2.nifty.com/winfaq/wxp/trouble.html#1375
■No17869に返信(回答さんの記事)
> If fas = FileAttributes.ReadOnly Then
>
> でないかい?

検討違いだと思います。
http://dobon.net/vb/dotnet/file/filecopy.html
■No17870に返信(Blueさんの記事)

attrib コマンドを使ってみるとか。
ってリンク先に書いてありましたね(いま読んだ)。

当方で attrib コマンドでフォルダに読み取り専用属性を追加してみましたが、その
状態で File.GetAttributes は正しく取れていましたよ。

こんな感じ。

System.IO.File.GetAttributes("C:\\work")
ReadOnly | Directory
System.IO.File.GetAttributes("C:\\work") & System.IO.FileAttributes.ReadOnly
ReadOnly

とりあえず、正しくフォルダに属性が付加されているかどうかを調べてみてはどうで
しょう>スレ主さん
attribコマンドで読み取り専用属性を確認し、処理したところ正常に
処理できました。
(エクスプローラで読み取り専用かどうかをみてました。)

初歩的なご質問にご回答いただきましてありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板