Soup Up Your Terminal Server: Optimizing Explorer’s Network Performance

Update: The ADM file can now be downloaded here.

I recently came across a post in the Windows Server Performance Team’s blog that lists several registry values which can be used to tune Explorer’s SMB performance by modifying the following:

  • Searches for Desktop.ini files used for folder customization
  • Periodic refreshes of folder contents
  • Searches for supporting library (.dll) files
  • Individual file details and attributes pulled for each file
  • Thumbnail extraction

I found the tips very interesting, but also lacking background and explanation. That is why I looked up the the KB articles explaining the registry values mentioned and created an ADM template for easily setting the values via group policy.To give you a better feeling what we are talking about, here is the list of registry changes recommended by the original poster:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"UseDesktopIniCache"=dword:00000001
"NoRemoteRecursiveEvents"=dword:00000001
"NoRemoteChangeNotify"=dword:00000001
"StartRunNoHOMEPATH"=dword:00000001
"NoRecentDocsNetHood"=dword:00000001
"NoDetailsThumbnailOnNetwork"=dword:00000001
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MRXSmb\Parameters]
"InfoCacheLevel"=dword:00000010
[HKEY_CLASSES_ROOT\*\shellex\PropertySheetHandlers\CryptoSignMenu]
"SuppressionPolicy"=dword:00100000
[HKEY_CLASSES_ROOT\*\shellex\PropertySheetHandlers\{3EA48300-8CF6-101B-84FB-666CCB9BCD32}]
"SuppressionPolicy"=dword:00100000
[HKEY_CLASSES_ROOT\*\shellex\PropertySheetHandlers\{883373C3-BF89-11D1-BE35-080036B11A03}]
"SuppressionPolicy"=dword:00100000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\SCAPI]
"Flags"=dword:00100c02
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager]
"SafeDllSearchMode"=dword:00000001
"SafeProcessSearchMode"=dword:00000001

Of those settings, several go into the policies registry branch. But only the following is configurable via group policy by default:

  • NoRecentDocsNetHood: User -> Desktop -> Do not add shares of recently opened documents to Network Locations (supported only on: W2k, XP, W2k3)

All other settings are described in various Microsoft KB articles but cannot be set via group policy by default:

And then there are the following machine-specific settings that need to be set outside the policies registry branch as a tattooing policy:

The ADM template file I created allows for setting these values independently and, where applicable, either as part of the user or the computer configuration. It also contains the URLs of the relevant KB articles.

;
; Created 2007-11-07 by Helge Klein
;
 
;
; Machine settings
;
CLASS MACHINE
 
CATEGORY !!Optimization
 
CATEGORY !!ExplorerSMB
 
POLICY !!UseDesktopIniCache
EXPLAIN !!UseDesktopIniCache_Help
KEYNAME "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"
VALUENAME "UseDesktopIniCache"
VALUEON		NUMERIC	1
VALUEOFF		NUMERIC	0
END POLICY
 
POLICY !!NoRemoteRecursiveEvents
EXPLAIN !!NoRemoteRecursiveEvents_Help
KEYNAME "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"
VALUENAME "NoRemoteRecursiveEvents"
VALUEON		NUMERIC	1
VALUEOFF		NUMERIC	0
END POLICY
 
POLICY !!NoRemoteChangeNotify
EXPLAIN !!NoRemoteChangeNotify_Help
KEYNAME "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"
VALUENAME "NoRemoteChangeNotify"
VALUEON		NUMERIC	1
VALUEOFF		NUMERIC	0
END POLICY
 
POLICY !!NoDetailsThumbnailOnNetwork
EXPLAIN !!NoDetailsThumbnailOnNetwork_Help
KEYNAME "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"
VALUENAME "NoDetailsThumbnailOnNetwork"
VALUEON		NUMERIC	1
VALUEOFF		NUMERIC	0
END POLICY
 
POLICY !!InfoCacheLevel
EXPLAIN !!InfoCacheLevel_Help
KEYNAME "System\CurrentControlSet\Services\MRXSmb\Parameters"
VALUENAME "InfoCacheLevel"
VALUEON		NUMERIC	16
VALUEOFF		NUMERIC	1
END POLICY
 
POLICY !!SuppressionPolicy
EXPLAIN !!SuppressionPolicy_Help
KEYNAME "SOFTWARE\Classes\*\shellex\PropertySheetHandlers\CryptoSignMenu"
ACTIONLISTON
KEYNAME "SOFTWARE\Classes\*\shellex\PropertySheetHandlers\CryptoSignMenu"
VALUENAME "SuppressionPolicy"
VALUE NUMERIC	1048576
KEYNAME "SOFTWARE\Classes\*\shellex\PropertySheetHandlers\{3EA48300-8CF6-101B-84FB-666CCB9BCD32}"
VALUENAME "SuppressionPolicy"
VALUE NUMERIC	1048576
KEYNAME "SOFTWARE\Classes\*\shellex\PropertySheetHandlers\{883373C3-BF89-11D1-BE35-080036B11A03}"
VALUENAME "SuppressionPolicy"
VALUE NUMERIC	1048576
KEYNAME "SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\SCAPI"
VALUENAME "Flags"
VALUE NUMERIC	1051650
END ACTIONLISTON
ACTIONLISTOFF
KEYNAME "SOFTWARE\Classes\*\shellex\PropertySheetHandlers\CryptoSignMenu"
VALUENAME "SuppressionPolicy"
VALUE DELETE
KEYNAME "SOFTWARE\Classes\*\shellex\PropertySheetHandlers\{3EA48300-8CF6-101B-84FB-666CCB9BCD32}"
VALUENAME "SuppressionPolicy"
VALUE DELETE
KEYNAME "SOFTWARE\Classes\*\shellex\PropertySheetHandlers\{883373C3-BF89-11D1-BE35-080036B11A03}"
VALUENAME "SuppressionPolicy"
VALUE DELETE
KEYNAME "SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\SCAPI"
VALUENAME "Flags"
VALUE DELETE
END ACTIONLISTOFF
END POLICY
 
POLICY !!SafeDllSearchMode
EXPLAIN !!SafeDllSearchMode_Help
KEYNAME "System\CurrentControlSet\Control\Session Manager"
VALUENAME "SafeDllSearchMode"
VALUEON		NUMERIC	1
VALUEOFF		NUMERIC	0
END POLICY
 
POLICY !!SafeProcessSearchMode
EXPLAIN !!SafeProcessSearchMode_Help
KEYNAME "System\CurrentControlSet\Control\Session Manager"
VALUENAME "SafeProcessSearchMode"
VALUEON		NUMERIC	1
VALUEOFF		NUMERIC	0
END POLICY
 
END CATEGORY
 
END CATEGORY
 
;
; User settings
;
CLASS USER
 
CATEGORY !!Optimization
 
CATEGORY !!ExplorerSMB
 
POLICY !!NoRemoteRecursiveEvents
EXPLAIN !!NoRemoteRecursiveEvents_Help
KEYNAME "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"
VALUENAME "NoRemoteRecursiveEvents"
VALUEON		NUMERIC	1
VALUEOFF		NUMERIC	0
END POLICY
 
POLICY !!NoRemoteChangeNotify
EXPLAIN !!NoRemoteChangeNotify_Help
KEYNAME "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"
VALUENAME "NoRemoteChangeNotify"
VALUEON		NUMERIC	1
VALUEOFF		NUMERIC	0
END POLICY
 
POLICY !!StartRunNoHOMEPATH
EXPLAIN !!StartRunNoHOMEPATH_Help
KEYNAME "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"
VALUENAME "StartRunNoHOMEPATH"
VALUEON		NUMERIC	1
VALUEOFF		NUMERIC	0
END POLICY
 
POLICY !!NoDetailsThumbnailOnNetwork
EXPLAIN !!NoDetailsThumbnailOnNetwork_Help
KEYNAME "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"
VALUENAME "NoDetailsThumbnailOnNetwork"
VALUEON		NUMERIC	1
VALUEOFF		NUMERIC	0
END POLICY
 
END CATEGORY
 
END CATEGORY
 
[strings]
 
Optimization="Optimization"
ExplorerSMB="Explorer Network Performance"
 
UseDesktopIniCache="Cache Desktop.ini"
UseDesktopIniCache_Help="http://support.microsoft.com/kb/840309/EN-US"
 
NoRemoteRecursiveEvents="Disable Remote Recursive Events"
NoRemoteRecursiveEvents_Help="http://support.microsoft.com/?scid=kb%3Ben-us%3B330929&x=9&y=10"
 
NoRemoteChangeNotify="Turn Off Directory Notification SMB Requests"
NoRemoteChangeNotify_Help="http://support.microsoft.com/?scid=kb%3Ben-us%3B812669&x=14&y=12"
 
StartRunNoHOMEPATH="Do Not Search Home Folder First When a Program is Started From Start -> Run"
StartRunNoHOMEPATH_Help="http://support.microsoft.com/?scid=kb%3Ben-us%3B264061&x=18&y=9"
 
NoDetailsThumbnailOnNetwork="Do Not Extract Details Thumbnails from Files Over the Network"
NoDetailsThumbnailOnNetwork_Help="http://support.microsoft.com/?scid=kb%3Ben-us%3B830903&x=17&y=18"
 
SuppressionPolicy="Do Not Obtain Detailed File Information When Opening a File"
SuppressionPolicy_Help="http://support.microsoft.com/kb/829700/EN-US"
 
InfoCacheLevel="Enable Caching of Path Information for all Files"
InfoCacheLevel_Help="http://support.microsoft.com/kb/834350/EN-US"
 
SafeDllSearchMode="Do Not Search for DLLs in Home Folder First (W2k)"
SafeDllSearchMode_Help="http://support.microsoft.com/kb/306850/EN-US"
 
SafeProcessSearchMode="Do Not Search for DLLs in Home Folder First (XP and W2k3)"
SafeProcessSearchMode_Help="http://support.microsoft.com/?scid=kb%3Ben-us%3B905890&x=13&y=9"

, , , ,

10 Responses to Soup Up Your Terminal Server: Optimizing Explorer’s Network Performance

  1. Jeremy Saunders November 19, 2007 at 00:19 #

    Great work Helge.

    There are two errors in your ADM template.

    Between the Explain and ActionListOn keywords you need a Keyname reference, such as the one I’ve added below:
    EXPLAIN !!SuppressionPolicy_Help
    KEYNAME “SOFTWARE\Classes\*\shellex\PropertySheetHandlers”
    ACTIONLISTON

    The 2nd SafeProcessSearchMode reference under the strings section should be SafeProcessSearchMode_Help

    Other than that it works a treat:)

    Cheers,
    Jeremy.

  2. Helge November 19, 2007 at 10:33 #

    Thanks, Jermemy. You are right and I should have tested it better.
    I corrected the ADM file in the post.

    Helge

  3. WildKid November 27, 2007 at 11:33 #

    Really good and really interesting post. I expect (and other readers maybe :)) new useful posts from you!
    Good luck and successes in blogging!

  4. Joe Weber December 18, 2007 at 20:05 #

    Dig the blog a LOT!
    Nice style and I like the way you discuss the problems . I’m going to book mark it.
    ;)

  5. Nicolas January 31, 2008 at 13:13 #

    Hello,

    I tried to import the adm settings, but InfoCacheLevel and everything below are never visible in my GPO :(

    It looks like the registry path is refused (if I copy & paste KEYNAME of UseDesktopIniCache the setting appear).

    Have you got any idea ?

    Thanks,
    N

  6. Helge January 31, 2008 at 18:54 #

    Nicolas,

    in GPEdit.msc go to View -> Filter and uncheck “Only show managed policies”.

    I hope this helps.

  7. Nicolas February 1, 2008 at 19:00 #

    Great thanks ;)

    Any idea of other settings for Vista ?

    It’s amazing all the stuff exchanged between Vista and a domain server.

    I have remote users connected via VPN, and the performances fall down due to validation of everything with the 2003 SP2 domain server. (even after sending the .REG mentionned on this page)

    Regards,
    N

  8. Ingmar Verheij July 19, 2012 at 20:15 #

    Hi Helge,

    As you mentioned recently on twitter when we discussed “best practices” it can become an excuse for thinking. It happened!
    The UseDesktopIniCache should NOT always be set to 1, in some cases its better to set it to 0.,

    I wrote an article about a 3 ~ 5 seconds delay when browing when using redirected My Documents on Windows Server 2003 (http://www.ingmarverheij.com/2012/07/delayed-browsing-5-sec-with-redirected-my-documents-on-windows-server-2003/). Setting UseDesktopIniCache to 0 solved the issue.

    Cheers
    Ingmar

    • Helge July 19, 2012 at 20:32 #

      Thanks for pointing that out, Ingmar. Never trust the internet ;-)

Trackbacks/Pingbacks

  1. Jason Conger Blog » Blog Archive » Terminal Services Performance SMB Traffic ADM Template - November 13, 2007

    […] Continue at source to read about and download this AMD template… […]

Leave a Reply