GetAttr返回值8211 VBA

时间:2017-05-20 18:58:53

标签: vba getattr

在VBA中从GetAttr函数返回的8211的值是什么意思?

使用的代码:

Private Sub this()
    Dim path As String
    path = "c:\"
    Dim firstdur As String
    firstdir = Dir(path, vbNormal + vbHidden + vbDirectory)
    Do Until firstdir = ""
            Debug.Print ; firstdir & " " & GetAttr(path & firstdir)
        firstdir = Dir()
    Loop
End Sub

有问题的输出:

 MSOCache 8211

2 个答案:

答案 0 :(得分:3)

GetAttr() Function返回表示文件,目录或文件夹属性的Integer。

实际上,结果是Vum在Enum VbFileAttribute中指定的以下常量的总和:

vbNormal       0   Normal.
vbReadOnly     1   Read-only.
vbHidden       2   Hidden.
vbSystem       4   System file. Not available on the Macintosh.
vbDirectory   16   Directory or folder.
vbArchive     32   File has changed since last backup. Not available on the Macintosh.
vbAlias       64   Specified file name is an alias. Available only on the Macintosh.

Windows File API也使用了File Attribute Constants

FILE_ATTRIBUTE_READONLY                 1 (0x1)               A file that is read-only. Applications can read the file, but cannot write to it or delete it. This attribute is not honored on directories.
FILE_ATTRIBUTE_HIDDEN                   2 (0x2)               The file or directory is hidden. It is not included in an ordinary directory listing.
FILE_ATTRIBUTE_SYSTEM                   4 (0x4)               A file or directory that the operating system uses a part of, or uses exclusively.
FILE_ATTRIBUTE_DIRECTORY                16 (0x10)             The handle that identifies a directory.
FILE_ATTRIBUTE_ARCHIVE                  32 (0x20)             A file or directory that is an archive file or directory. Applications typically use this attribute to mark files for backup or removal . 
FILE_ATTRIBUTE_DEVICE                   64 (0x40)             This value is reserved for system use.
FILE_ATTRIBUTE_NORMAL                   128 (0x80)            A file that does not have other attributes set. This attribute is valid only when used alone.
FILE_ATTRIBUTE_TEMPORARY                256 (0x100)           A file that is being used for temporary storage. File systems avoid writing data back to mass storage if sufficient cache memory is available, because typically, an application deletes a temporary file after the handle is closed. In that scenario, the system can entirely avoid writing the data. Otherwise, the data is written after the handle is closed.
FILE_ATTRIBUTE_SPARSE_FILE              512 (0x200)           A file that is a sparse file.
FILE_ATTRIBUTE_REPARSE_POINT            1024 (0x400)          A file or directory that has an associated reparse point, or a file that is a symbolic link.
FILE_ATTRIBUTE_COMPRESSED               2048 (0x800)          A file or directory that is compressed. For a file, all of the data in the file is compressed. For a directory, compression is the default for newly created files and subdirectories.
FILE_ATTRIBUTE_OFFLINE                  4096 (0x1000)         The data of a file is not available immediately. This attribute indicates that the file data is physically moved to offline storage. This attribute is used by Remote Storage, which is the hierarchical storage management software. Applications should not arbitrarily change this attribute.
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED      8192 (0x2000)         The file or directory is not to be indexed by the content indexing service.
FILE_ATTRIBUTE_ENCRYPTED                16384 (0x4000)        A file or directory that is encrypted. For a file, all data streams in the file are encrypted. For a directory, encryption is the default for newly created files and subdirectories.
FILE_ATTRIBUTE_INTEGRITY_STREAM         32768 (0x8000)        The directory or user data stream is configured with integrity (only supported on ReFS volumes). It is not included in an ordinary directory listing. The integrity setting persists with the file if it's renamed. If a file is copied the destination file will have integrity set if either the source file or destination directory have integrity set.
FILE_ATTRIBUTE_VIRTUAL                  65536 (0x10000)       This value is reserved for system use.
FILE_ATTRIBUTE_NO_SCRUB_DATA            131072 (0x20000)      The user data stream not to be read by the background data integrity scanner (AKA scrubber). When set on a directory it only provides inheritance. This flag is only supported on Storage Spaces and ReFS volumes. It is not included in an ordinary directory listing.
FILE_ATTRIBUTE_RECALL_ON_OPEN           262144 (0x40000)      This attribute only appears in directory enumeration classes (FILE_DIRECTORY_INFORMATION, FILE_BOTH_DIR_INFORMATION, etc.). When this attribute is set, it means that the file or directory has no physical representation on the local system; the item is virtual. Opening the item will be more expensive than normal, e.g. it will cause at least some of it to be fetched from a remote store.
FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS    4194304 (0x400000)    When this attribute is set, it means that the file or directory is not fully present locally. For a file that means that not all of its data is on local storage (e.g. it may be sparse with some data still in remote storage). For a directory it means that some of the directory contents are being virtualized from another location. Reading the file / enumerating the directory will be more expensive than normal, e.g. it will cause at least some of the file/directory content to be fetched from a remote store. Only kernel-mode callers can set this bit.

特别是对于你的情况,它是8211 = 8192 + 16 + 2 + 1的总和,这意味着只读隐藏文件夹,不需要编入索引。

答案 1 :(得分:1)

您可以参考this page并检查设置了哪些属性(标志)。对于C:\MSOCACHE

 8211 = &H2013 = 0010 0000 0001 0011
 =       1      +    2    +     16       +      8192
 =   READONLY   + HIDDEN  +   DIRECTORY  + NOT_CONTENT_INDEXED

因此文件C:\MSOCACHE是一个只读隐藏目录,不是内容索引