
Essentially this is a logical extension to this thread wherein a user found an attribute he was unaware had previously existed under NTFS - so, in the interests of discovering things myself, I wrote this utility to change/correct/study (primarily) extra/little-known attributes on such filesystem objects just to see how they play in the wild.
As the title implies this is for Anoraks meaning that it is for weirdos who like to play with filesystem objects in ways that other people wouldn't understand. Perhaps there is some hint of deviant sexuality involved, but I doubt it - it's just what some people do as a hobby, or as an alternative to what is flippantly referred to (by people who know nothing of human existence) as "having a life".


Download Link: Seafa (Updated: 10-Mar-13, Version 0.5.0.5)
(RAR includes 32/64-bit EXE's and Source Code)
User-Command format: > Seafa.exe $A
As you can see, I used the x2 [S]tock attributes display format of "-----------", with a slight change - and for those who don't know what applies to which slot in which order (since most people never see full attributes listed), I'll enumerate them here, just for the fun of it.
Stock Layout: RHSADCEOJIP TNMVGU
R - FILE_ATTRIBUTE_READONLY
H - FILE_ATTRIBUTE_HIDDEN
S - FILE_ATTRIBUTE_SYSTEM
A - FILE_ATTRIBUTE_ARCHIVE
D - FILE_ATTRIBUTE_DIRECTORY
C - FILE_ATTRIBUTE_COMPRESSED
E - FILE_ATTRIBUTE_ENCRYPTED
O - FILE_ATTRIBUTE_OFFLINE
J - FILE_ATTRIBUTE_REPARSE_POINT (Junctions)
I - FILE_ATTRIBUTE_NOT_CONTENT_INDEXED (Disabled Indexing)
P - FILE_ATTRIBUTE_SPARSE_FILE (See this)
T - FILE_ATTRIBUTE_TEMPORARY
N - FILE_ATTRIBUTE_NORMAL
M - FILE_ATTRIBUTE_DEVICE (Reserved)
V - FILE_ATTRIBUTE_VIRTUAL (Reserved)
G - FILE_ATTRIBUTE_INTEGRITY_STREAM (ReFS only)
U - FILE_ATTRIBUTE_NO_SCRUB_DATA (ReFS only)
Now obviously everyone is familiar with the usual boring old attributes, so I included them simply for completeness, not because they have changed in any way. De facto, this utility only comes into play if you wish to actively set the Offline, Indexing, Temporary, Integrity Stream, No Scrub, or (force-ably) "Normal" attributes.
So, is there any reason you would want to do this? No, not really. Anoraks, remember?

The -I- attribute is essentially the status of the "Allow this file to have its contents indexed in addition to file" checkbox that's available when you right-click on an object to check its Properties, and you select "Advanced". Normally indexing is mass-disabled just by denying the indexing service access to selective areas of your drives (open the Start Menu and type "indexing"). However, should you wish to control/automate this on a more granular level (and in particular on some objects which the service won't allow to become non-indexed), this utility may be applied in that manner.
The -N- attribute is so-called "Normal" simply because it is the absence of all other attributes - and this is taken literally. For instance, you can't assign -N- to a folder because that object already has the -D- attribute permanently assigned to it, and were you to remove that, the object would no longer be a folder. (For those interested, this is actually possible to do, at the expense of destroying the folder, but thankfully not with this utility as it only uses the Windows API function Get/SetFileAttributesW which doesn't function on that level.)
The -T- attribute (which is actually quite ingenious as it can utilise disc cache memory instead of actually ever physically writing ephemera for true temporality) is for files only and cannot be applied to folders. It is beyond the purview of this user/thread to describe exactly how this may be used effectively by a given application, but hey - you never know what I end up doing when I'm bored and it won't stop raining.
To sum up:
* This utility can handle multiple selections/arguments and apply/revert the same attributes to all the objects at once, where possible, depending on the base-attributes of the objects in question.
* It is unicode compliant, and does the usual checking on the veracity of objects (you can't assign attributes to drives or root-folders, etc).
* As it executes assignments it generates a log file ('__Seafa.log') in the %Temp% folder which is overwritten each time; this is only really necessary if assignment errors occur (in case of failures the log will open automatically to show the specific objects in question and what you were attempting to modify) - but the user may track this themselves by ticking the box to always display the log regardless of whether errors occur or not.
* Failures are verified/gauged by comparing the original attributes to an immediate post-assignment re-read of the current state of each object, so it's pretty robust.
And yes, I am aware that there are many other "Mass Attribute Changers" out there, but they never allow for the more obscure (-O-, -I-, -T-, -N-) modifiers, and they don't always verify results - hence the reason I use the term "extra" in the title.

In case anyone requests it, I could add other functionality such as subfolder-content recursion, support for the '$>' token to allow true mass-selections, and command-line attribute presets, or timestamp handling - but for now I just decided to keep it simple as it was originally intended "just as something to play with when its raining".
