<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">File it!</title><subtitle type="html">Brian Dewey's Blog: All about file systems, storage, and miscellany</subtitle><id>http://blogs.msdn.com/brian_dewey/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brian_dewey/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/brian_dewey/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2004-01-19T13:57:00Z</updated><entry><title>Setting up DFS at home? Learn from Charlie.</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brian_dewey/archive/2004/04/26/120574.aspx" /><id>http://blogs.msdn.com/brian_dewey/archive/2004/04/26/120574.aspx</id><published>2004-04-27T00:11:00Z</published><updated>2004-04-27T00:11:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Verdana size=2&gt;It always amazes me when I learn the advanced home networks some people set up. Charlie Kindel has set up DFS in his home, and wrote a nice entry in his blog about some of the troubleshooting he had to do. If you're having problems accessing a domain DFS namespace, check out Charlie's entry. The problem may simply be that the DFS service is turned off on one of your domain controllers.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://kindel.com/blogs/charlie/posts/259.aspx"&gt;&lt;FONT face=Verdana size=2&gt;http://kindel.com/blogs/charlie/posts/259.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=120574" width="1" height="1"&gt;</content><author><name>Brian Dewey</name><uri>http://blogs.msdn.com/members/Brian+Dewey.aspx</uri></author></entry><entry><title>Understanding the policy "Do not automatically make redirected folders available offline"</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brian_dewey/archive/2004/02/06/68811.aspx" /><id>http://blogs.msdn.com/brian_dewey/archive/2004/02/06/68811.aspx</id><published>2004-02-06T21:00:00Z</published><updated>2004-02-06T21:00:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Today, the CSC team (the people who bring you Offline Files in Windows 2000 and Windows XP) was helping a customer understand the ramifications of the policy "Do not automatically make redirected folders available offline." If you're in a situation where you've made a special folder available offline -- a folder such as My Documents -- and not all of the files you expect to see are available when offline, it's worth checking this policy setting.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;In Windows 2000, when a special shell folder (such as My Documents) is redirected by the Folder Redirection feature (as opposed to directly modifying registry keys), Folder Redirection pins the top-level directory entry and its desktop.ini file if one is applicable.&amp;nbsp; No other files or folders are pinned by that operation.&amp;nbsp; The objective of this minimal operation was to keep the Windows shell operational when the redirected resource becomes unavailable.&amp;nbsp; The goal was not to provide offline access to the redirected content.&amp;nbsp; In order for files or subdirectories to be available offline, the contents of the root directory of the redirected folder (and optionally all of its subfolders) must be pinned either manually by the user or administratively through Group Policy.&amp;nbsp; Once the root directory of the folder is pinned in this way, Offline Files now considers the redirected folder to be "pinned" and the normal semantics of a pinned folder are realized.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;We received feedback from several large Windows 2000 customers that their expectation differed from the as-designed behavior.&amp;nbsp; These customers expected that the redirection of a shell folder implies the offline availability of that folder and all of its content.&amp;nbsp; They did not want to take the additional steps of pinning the redirected folder manually or through Group Policy.&amp;nbsp; As a result, the default behavior in Windows XP was changed so that Offline Files automatically pins the contents of a redirected shell folder (again, when redirected by the Folder Redirection feature).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;It is important to note that the act of redirecting the folder still does not pin the content.&amp;nbsp; Redirection pins only the folder root directory and its desktop.ini file if applicable.&amp;nbsp; This is so that the process of redirection can complete relatively quickly.&amp;nbsp; Offline Files then later pins the contents in the following situations:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;During a logoff synchronization, we always scan the contents of redirected shell folders pinning files not already pinned, regardless of the "sync all files before logging off" setting.&amp;nbsp; There is one exception.&amp;nbsp; We do not do this operation if the associated network path is considered "slow".&amp;nbsp;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;The code that processes the "Administratively assigned offline folders" policy also pins the unpinned contents of redirected shell folders.&amp;nbsp; This behavior was added to address the scenario where users tend to not log off.&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;There are several reasons why a customer may not want to use this new default behavior.&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;It is relatively expensive.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;To retain consistency with Win2000 clients&amp;nbsp;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;Anticipating that some customers might not want this default behavior, we introduced the "Do not automatically make redirected folders available offline" policy.&amp;nbsp; With this policy enabled, the behavior is equivalent to Windows 2000 as described earlier.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=68811" width="1" height="1"&gt;</content><author><name>Brian Dewey</name><uri>http://blogs.msdn.com/members/Brian+Dewey.aspx</uri></author></entry><entry><title>Understanding ACLs in NTFS</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brian_dewey/archive/2004/01/20/60902.aspx" /><id>http://blogs.msdn.com/brian_dewey/archive/2004/01/20/60902.aspx</id><published>2004-01-21T04:04:00Z</published><updated>2004-01-21T04:04:00Z</updated><content type="html">&lt;FONT face=Verdana&gt;
&lt;P class=Text style="MARGIN: 3pt 0in"&gt;&lt;FONT size=2&gt;Associating Access Control Lists (ACLs) with files is the fundamental mechanism for securing file system data. Consequently, the #1 rule for securely storing data in files is to ensure the proper ACLs are on your files.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Text style="MARGIN: 3pt 0in"&gt;&lt;FONT size=2&gt;Using NTFS so you can have ACLs is not enough. You need to know &lt;SPAN class=Italic&gt;&lt;EM&gt;what&lt;/EM&gt;&lt;/SPAN&gt; ACLs you want to put on your files, and you need to know &lt;SPAN class=Italic&gt;&lt;EM&gt;how&lt;/EM&gt;&lt;/SPAN&gt; to go about putting ACLs on your files so you can avoid common mistakes. For determining &lt;SPAN class=Italic&gt;&lt;EM&gt;what&lt;/EM&gt;&lt;/SPAN&gt; ACLs to put on files, refer to &lt;SPAN class=Bold&gt;&lt;STRONG&gt;Writing Secure Code,&lt;/STRONG&gt;&lt;/SPAN&gt; pages 95 &amp;#8211; 98. This&amp;nbsp;post will deal with how you go about ensuring the ACLs you want are actually on the files you want. There are several common misconceptions about ACLs in the file system that can lead to security holes. However, if you obey the following rules, you should be able to properly ACL your data.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=NumberedList1 style="MARGIN: 3pt 0in 3pt 0.25in; mso-list: l2 level1 lfo4"&gt;&lt;SPAN style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Verdana size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Verdana size=2&gt;Rely only on the ACL on the file to provide security&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=TextinList1 style="MARGIN: 3pt 0in 3pt 0.25in"&gt;&lt;FONT face=Verdana size=2&gt;This rule seems so obvious that nobody could get it wrong: if you want to secure access to a file, you put an ACL &lt;SPAN class=Bold&gt;&lt;STRONG&gt;on that file.&lt;/STRONG&gt;&lt;/SPAN&gt; However, there are several well-intentioned ways to violate this rule. Consider the following:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=BulletedList2 style="MARGIN: 3pt 0in 3pt 0.5in"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=2&gt;&amp;#183;&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Verdana size=2&gt;"I don't need a strong ACL on my file, because I (put the file in a hidden location / put the file in a directory with a strong ACL)."&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=TextinList2 style="MARGIN: 3pt 0in 3pt 0.5in"&gt;&lt;FONT face=Verdana size=2&gt;Hopefully, anybody trained to think of security threats will realize that the obscurity of a file's location is no protection. This is particularly true on NTFS, which provides a change journal that tells applications what files on the disk have been changing. You may &lt;SPAN class=Italic&gt;&lt;EM&gt;think&lt;/EM&gt;&lt;/SPAN&gt; that nobody knows where you are creating your log file, but NTFS will happily tell people who ask.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=TextinList2 style="MARGIN: 3pt 0in 3pt 0.5in"&gt;&lt;FONT face=Verdana size=2&gt;It is also not sufficient to rely upon the ACL on a &lt;SPAN class=Italic&gt;&lt;EM&gt;directory&lt;/EM&gt;&lt;/SPAN&gt; to protect the contents of a file &amp;#8212; there are three ways that an attacker can bypass directory security and access a file. First, if the attacker knows or can guess the name of the file, he can just open the file. By default, Windows does not check if a user has permissions on parent directories when opening a file. Second, if the attacker knows the file ID, he can open the file by ID. Finally, the attacker can do the same thing with the object ID for the file.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=BulletedList2 style="MARGIN: 3pt 0in 3pt 0.5in"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=2&gt;&amp;#183;&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Verdana size=2&gt;"I don't need a strong ACL on my file, because I open an exclusive-access handle to the file."&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=TextinList2 style="MARGIN: 3pt 0in 3pt 0.5in"&gt;&lt;FONT face=Verdana size=2&gt;When you create a file handle using &lt;/FONT&gt;&lt;SPAN class=CodeEmbedded&gt;&lt;SPAN style="FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt"&gt;&lt;FONT face="Courier New"&gt;CreateFile(&amp;nbsp;)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Verdana size=2&gt;, you get to specify a &lt;SPAN class=Italic&gt;&lt;EM&gt;sharing mode.&lt;/EM&gt;&lt;/SPAN&gt; This tells the operating system to place constraints on the types of handles that may be opened concurrently with yours. For example, you may choose not to share access with other read handles. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=TextinList2 style="MARGIN: 3pt 0in 3pt 0.5in"&gt;&lt;FONT face=Verdana size=2&gt;However, the sharing mode is a coarse-grained mechanism for concurrency control; it is not a mechanism to secure access to data. Using sharing modes for security has three problems. First, the proliferation of shadow copy technology within Windows means that, while you may be able to use sharing modes to keep people from reading the &lt;SPAN class=Italic&gt;&lt;EM&gt;current&lt;/EM&gt;&lt;/SPAN&gt; version of a file, there is a high likelihood that there is a read-only copy of the file that is unprotected by sharing modes. Second, there is an inherent race condition when you try to use sharing modes for security: what if the attacker is able to open his handle before you? Finally, if you ever close your handle &amp;#8212; for example, if your application AVs &amp;#8212; then the data is unprotected.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=TextinList1 style="MARGIN: 3pt 0in 3pt 0.25in"&gt;&lt;FONT face=Verdana size=2&gt;In short, if you want to secure access to a file, the only reliable way is to place an appropriate ACL directly on the file.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=NumberedList1 style="MARGIN: 3pt 0in 3pt 0.25in"&gt;&lt;SPAN style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Verdana size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Verdana size=2&gt;Understand how ACL inheritance works&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=TextinList1 style="MARGIN: 3pt 0in 3pt 0.25in"&gt;&lt;FONT face=Verdana size=2&gt;Once you know the ACL that you want to put on your file, and you know to put the ACL on the &lt;SPAN class=Italic&gt;&lt;EM&gt;file&lt;/EM&gt;&lt;/SPAN&gt; and not some other directory, you need to understand &lt;SPAN class=Italic&gt;&lt;EM&gt;how&lt;/EM&gt;&lt;/SPAN&gt; you are applying the ACL to your file. One mechanism for putting an ACL on a file is to use object inheritance. In this scenario, you place your desired ACL on the directory you store your files in, and then mark the directory to have child objects inherit the ACL.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=TextinList1 style="MARGIN: 3pt 0in 3pt 0.25in"&gt;&lt;FONT face=Verdana size=2&gt;There is nothing wrong with using directory inheritance as the mechanism for applying ACLs to your files. This is probably the most convenient way to apply ACLs to files if your application stores all of its files in a single directory. However, the common misunderstanding of inheritance is that the ACLs automatically apply to any file in the directory. This is not true: the ACLs are inherited only for new files created in that directory. If you &lt;I style="mso-bidi-font-style: normal"&gt;move&lt;/I&gt; an existing file into the directory, it will retain its ACLs. Therefore, you cannot rely upon ACL inheritance to secure access to files that you &lt;I style="mso-bidi-font-style: normal"&gt;move&lt;/I&gt; into secured directories. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=NumberedList1 style="MARGIN: 3pt 0in 3pt 0.25in"&gt;&lt;SPAN style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Verdana size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Verdana size=2&gt;Understand the risks of &lt;B style="mso-bidi-font-weight: normal"&gt;Delete child &lt;/B&gt;access right&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=TextinList1 style="MARGIN: 3pt 0in 3pt 0.25in"&gt;&lt;FONT face=Verdana size=2&gt;For the most part, you rely only on the ACLs on files to secure access to files. However, there is a vulnerability for files that relates not to a weak ACL on the file, but rather to the ACL on the file's directory. If an attacker has &lt;B style="mso-bidi-font-weight: normal"&gt;Delete child&lt;/B&gt; access right for a directory, then he has the ability to delete &lt;I style="mso-bidi-font-style: normal"&gt;any&lt;/I&gt; file in that directory &amp;#8212; even files that he has no access to.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=TextinList1 style="MARGIN: 3pt 0in 3pt 0.25in"&gt;&lt;FONT face=Verdana size=2&gt;The ability to delete a file is particularly dangerous if it is coupled with the ability to read the file and create new files in the directory; the combination of these privileges is equivalent to &lt;B style="mso-bidi-font-weight: normal"&gt;Take ownership. &lt;/B&gt;Why? Because the attacker can read the data from the file, delete the file, and then recreate a file with the same name and with the same data &amp;#8212; only now the attacker is the owner, with implicit full control over the data, and you might not ever realize it.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Text style="MARGIN: 3pt 0in"&gt;&lt;FONT face=Verdana size=2&gt;In summary, the best practices for securing access to a file comes down to:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=BulletedList1 style="MARGIN: 3pt 0in 3pt 0.25in"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=2&gt;&amp;#183;&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Verdana size=2&gt;Use the ACL on the file, not on directories, to control who gets to access the file.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=BulletedList1 style="MARGIN: 3pt 0in 3pt 0.25in"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=2&gt;&amp;#183;&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Verdana size=2&gt;Carefully guard who has &lt;B style="mso-bidi-font-weight: normal"&gt;Delete child&lt;/B&gt; access right on directories.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=60902" width="1" height="1"&gt;</content><author><name>Brian Dewey</name><uri>http://blogs.msdn.com/members/Brian+Dewey.aspx</uri></author></entry><entry><title>What's the "Web Client Network"?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brian_dewey/archive/2004/01/19/60356.aspx" /><id>http://blogs.msdn.com/brian_dewey/archive/2004/01/19/60356.aspx</id><published>2004-01-20T01:49:00Z</published><updated>2004-01-20T01:49:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I had a customer ask me this today, so in case others are wondering: What's the &amp;#8220;Web Client Network&amp;#8221;?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;If you open Windows Explorer, click &lt;STRONG&gt;Network Neighborhood&lt;/STRONG&gt;, then click &lt;STRONG&gt;Entire Network&lt;/STRONG&gt;, you'll see an icon for &lt;STRONG&gt;Web Client Network&lt;/STRONG&gt;. The customer saw nothing under this icon, so was wondering why it was there in the UI.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The short answer is that icon is present to display any WebDAV connections that your machine has. As many machines don't make WebDAV connections, that's why there was nothing under the icon for this particular customer.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The long answer: Windows clients can access files on other machines using a variety of network protocols. Each installed network protocol that the client supports gets an icon under &lt;STRONG&gt;Entire Network&lt;/STRONG&gt; in &lt;STRONG&gt;My Network Places&lt;/STRONG&gt;. The native protocol that Windows clients and Windows servers support is known as SMB. (A version of the SMB protocol was publicly licensed and is called CIFS.) If you expand &lt;STRONG&gt;Microsoft Windows Network &lt;/STRONG&gt;under Entire Network, you will see computers that you can connect to using the SMB protocol. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Starting with Windows XP, Windows clients can also connect to machines using the WebDAV protocol. This is a file sharing protocol supported by some web servers, such as &lt;/FONT&gt;&lt;A href="http://www.msnusers.com"&gt;&lt;FONT face=Verdana size=2&gt;http://www.msnusers.com&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;. If you have any active WebDAV connections, you will see them listed in &lt;STRONG&gt;Web Client Network&lt;/STRONG&gt;.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=60356" width="1" height="1"&gt;</content><author><name>Brian Dewey</name><uri>http://blogs.msdn.com/members/Brian+Dewey.aspx</uri></author></entry><entry><title>What makes a valid Windows file name?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brian_dewey/archive/2004/01/19/60263.aspx" /><id>http://blogs.msdn.com/brian_dewey/archive/2004/01/19/60263.aspx</id><published>2004-01-19T22:02:00Z</published><updated>2004-01-19T22:02:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Verdana size=2&gt;A common question for people starting to program on Windows is, &amp;#8220;What makes a valid Windows file name?&amp;#8221; You want to use this information to make simplifying assumptions in your code: that names can be no longer than MAX_PATH, that two names won't differ only by case, etc. Unfortunately, the answer to what makes a valid file name in Windows is not simple.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Text style="MARGIN: 3pt 0in"&gt;&lt;FONT face=Verdana size=2&gt;Due to the layering of Windows architecture, the definition of a "legal" file name may vary depending upon the component of the operating system you are dealing with. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=BulletedList1 style="MARGIN: 3pt 0in 3pt 0.25in"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=2&gt;&amp;#183;&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Verdana size=2&gt;NTFS and the Posix subsystem have the most permissive definition of a "legal" name. The name may be up to 32,768 Unicode characters long. The name can contain trailing periods, trailing spaces, and two files may have names that differ only in case (e.g., &lt;B style="mso-bidi-font-weight: normal"&gt;README.TXT&lt;/B&gt; and &lt;B style="mso-bidi-font-weight: normal"&gt;readme.txt&lt;/B&gt;).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=BulletedList1 style="MARGIN: 3pt 0in 3pt 0.25in"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=2&gt;&amp;#183;&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Verdana size=2&gt;The Win32 subsystem enforces additional constraints on legal file names. The name can be at most &lt;SPAN class=CodeEmbedded&gt;&lt;SPAN style="FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt"&gt;&lt;FONT face="Courier New"&gt;MAX_PATH&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; characters long (defined in windef.h as 260 characters)&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;, may not have trailing dots or spaces, and file names are case &lt;I style="mso-bidi-font-style: normal"&gt;preserving,&lt;/I&gt; not case &lt;I style="mso-bidi-font-style: normal"&gt;sensitive&lt;/I&gt; &amp;#8212; if two files exists with names that differ only in case, you will only be able to manipulate one of them through Win32 APIs.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=BulletedList1 style="MARGIN: 3pt 0in 3pt 0.25in"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=2&gt;&amp;#183;&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Verdana size=2&gt;DOS and 16-bit Windows applications are still limited to "8.3" names.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Text style="MARGIN: 3pt 0in"&gt;&lt;FONT face=Verdana size=2&gt;See &lt;I style="mso-bidi-font-style: normal"&gt;Inside Windows 2000&lt;/I&gt;, pages 729ff, for more information on the different constraints on file names.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Text style="MARGIN: 3pt 0in"&gt;&lt;FONT face=Verdana size=2&gt;These differences have practical consequences for any code that attempts to manage files that could be created by another program. If your management code uses DOS (heaven forbid!) or Win32 APIs to manipulate files, it is possible for the untrusted program to create files that your program cannot open or manipulate. For example, a user connected to Posix-based FTP server could create files with file names longer than &lt;/FONT&gt;&lt;SPAN class=CodeEmbedded&gt;&lt;SPAN style="FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt"&gt;&lt;FONT face="Courier New"&gt;MAX_PATH&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Verdana size=2&gt;. If the administrator uses a Win32-based program to manage the FTP upload directory, then he will not be able to open, delete, or otherwise manipulate the files with long file names.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Text style="MARGIN: 3pt 0in"&gt;&lt;FONT face=Verdana size=2&gt;If you are writing a Win32-based program that manages arbitrary files, consider prepending "&lt;B style="mso-bidi-font-weight: normal"&gt;\\?\&lt;/B&gt;" to the start of file names before you call CreateFile(&amp;nbsp;), DeleteFile(&amp;nbsp;), RenameFile(&amp;nbsp;), etc. This escape sequence at the start of a file name instructs the Win32 subsystem to bypass its normal name checking functions, and you will be able to use any valid NTFS name from your Win32 program.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=60263" width="1" height="1"&gt;</content><author><name>Brian Dewey</name><uri>http://blogs.msdn.com/members/Brian+Dewey.aspx</uri></author></entry><entry><title>Welcome</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brian_dewey/archive/2004/01/19/60258.aspx" /><id>http://blogs.msdn.com/brian_dewey/archive/2004/01/19/60258.aspx</id><published>2004-01-19T21:57:00Z</published><updated>2004-01-19T21:57:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Hello. I'm the Lead Program Manager for network file system technologies in Windows. As I've watched the adoption of blogs as a way to share information among the development community, I thought it would be a good idea to provide a place to share tips and tricks about interacting with the file system in Windows. Thus, this blog was born. I'll use this space to share information on interacting with file systems, network file systems, our built-in file replication engine, etc. Let me know what you want to hear about, and I'll do my best to provide that information!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;--Brian&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=60258" width="1" height="1"&gt;</content><author><name>Brian Dewey</name><uri>http://blogs.msdn.com/members/Brian+Dewey.aspx</uri></author></entry></feed>