MS help file won’t show contents
And what is a stream?
For anyone who has installed Team Foundation Server you know it’s not going to be easy. We’ve been using TFS 2008 for a little while and it was time to move our source control to a new server. This is a perfect opportunity to upgrade to TFS 2010. First thing to do was to find the installation guide to see what has changed as far as service accounts and other system requirements. I downloaded the TFS 2010 installation guide but when I try to open it all I get in the content pain is the message “Navigation to the webpage was canceled”.
Ok, so this is the first road block but a quick search came up with the solution, or so I thought. Simply go to the file properties and click the “Unblock” button at the bottom like you see in the screen shot below.
But because nothing can ever be easy, when I brought up the properties of the help file on my computer I get this.
No Security label, no message and no button to unblock the file. Now it’s time to follow the rabbit hole.
It all started with something called Attachment Manager which was first introduced in Windows XP SP2. When I downloaded the file (currently running Windows 7), this Attachment Manger added something called a stream to the file, indicating where it came from in the form of a Zone Id. So what is a stream? Apparently a file can have multiple streams of data. The default stream is the unnamed stream and contains what you’d expect; the contents of the file. To demonstrate I first create a text file with a single sentence as shown in Notepad.
I can open a command prompt and show the contents using the more keyword.
Now I’ll create a second stream of data for the file test.txt. The name of the stream will be “TestStream” and I’ll put the word “TestData” in it using the command line. Then I can read this stream by redirecting it to “more” once again.
Opening the file in Notepad still only shows the sentence “Hello from the main stream.”
Enter this very cool utility from Sysinternals called Streams http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx. This can display the names of streams that the file has and remove them as well. Running this utility on my test.txt file is shown below. Notice there is a stream called “TestStream”.
So I run Streams against the help file I’ve downloaded and this is what it shows. There is a stream called “Zone.Identifier”.
Sending that stream through the “more” keyword will show me the contents of the stream.
Because I downloaded the help file from Microsoft, the Attachment Manager added this information to the file indicating it came from the Internet. No problem, I can use the cool Streams utility to remove the stream and I’ll be done. But that would only be a workaround, albeit a very viable workaround if you don’t have administrative control over your PC. I wanted to find out why I don’t have an “Unblock” button when I bring up the file properties.
My computer is on a corporate domain so I’m thinking it’s a corporate security setting somewhere. So I run a Resultant Set of Policy (RSoP) and sure enough the last setting prevents a user from unblocking a file.
I have inheritance blocked in the computer container but unfortunately this policy comes from the Users container which I don’t have access to. So I guess I’m stuck with the workaround unless I go off the domain. Working disconnected from the domain is too much of a pain though. Digging deeper I could deny the system account permissions to set the value of the registry entry but that may be a little too extreme. So I use the streams utility to remove the Zone.Identifier stream and everything works.
Once again here is a link to the Streams utility: http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx
And here is the link to the Windows Sysinternals site. http://technet.microsoft.com/en-us/sysinternals/default.aspx. There are a huge number of utilities that you might find useful.