This article outlines the various registry settings applicable to FSLogix that includes, but not limited to:
The following settings are applicable to FSLogix and not specific to profile or ODFC containers or Cloud Cache.
In cases where a user's session terminates abruptly, the VHD(x) mounted for the user's profile is not properly detached and the user's next login may not successfully attach their VHD(x) container. Enable this setting and FSLogix will attempt to clean up these invalid sessions and allow a successful sign-in. This setting affects both Profile and ODFC containers.
When enabled, this setting will create a redirection for the user's specific Recycle Bin into the VHD(x) container. This allows the user to restore items regardless of the machine from where they were deleted.
When enabled, this setting will attempt to compact the VHD disk during the sign-out operation and is designed to automatically decrease the Size On Disk
of the user's container(s) depending on a pre-defined threshold. For more information, see the VHD Disk Compaction documentation.
Profile Container Settings
The following settings are applicable to profile containers and are created in the following location:
- Registry Hive: HKEY_LOCAL_MACHINE
- Registry Path: SOFTWARE\FSLogix\Profiles
AccessNetworkAsComputerObject
Type: DWORD
Default Value: 0
Data values and use: 0: default – attach as user. 1: attach as computer - folder must have permissions for computer objects.
Caution
Do not use this configuration setting unless your storage provider or architecture will NOT work with user-level permissions to the VHD(x) container locations. This setting will allow the virtual machine to access all the VHD(x) files on the storage provider creating a potential security risk.
AttachVHDSDDL
Type: REG_SZ
Default Value: N/A
Data values and use: SDDL string representing the ACLs to use when attaching the VHD.
CleanOutNotifications
Type: DWORD
Default Value: 1
Data values and use: When enabled this setting cleans out registry keys in the HKEY_LOCAL_MACHINE hive that refer to a users SID.
These registry items are orphaned entries referring to users. Some of these entries persistent post profile deletion and may cause long term issues. There may be instances where disabling this setting can improve sign-in performance, but shouldn't be a long term solution as the orphaned entries will continue.
DeleteLocalProfileWhenVHDShouldApply
Type: DWORD
Default Value: 0
Data values and use: 0: no deletion. 1: delete local profile if exists and matches the profile being loaded from VHD.
Important
When FSLogix determines a user should have a FSLogix profile, but a local profile exists, FSLogix will permanently delete the local profile. The user will then be signed in with an FSLogix profile.
DiffDiskParentFolderPath
Type: REG_SZ
Default Value: %TEMP%
Data values and use: Specifies the path where difference disks will be created when ProfileType is configured to use them. Variables may be used in this value.
Supported variables are:
%username%
%userdomain%
%sid%
%osmajor%
%osminor%
%osbuild%
%osservicepack%
%profileversion%
%clientname%
Enabled
(required setting)
Type: DWORD
Default Value: 0
Data values and use: 0: Profile Containers disabled. 1: Profile Containers enabled
FlipFlopProfileDirectoryName
Type: DWORD
Default Value: 0
Data values and use: When set to 1 the SID folder is created as %username%_%sid%
instead of the default %sid%_%username%
.
Important
Be sure you understand how conflicting settings are applied and prioritized.
- This setting will OVERRIDE both SIDDirNameMatch and SIDDirNamePattern
- This setting has NO EFFECT when NoProfileContainingFolder is enabled
- NoProfileContainingFolder > FlipFlopProfileDirectoryName > (SIDDirNameMatch and SIDDirNamePattern)
InstallAppxPackages
Type: DWORD
Default Value: 1
Data values and use: When set to 1, this setting will read the AppxPackages.xml manifest file from the user's profile and install / re-register the list of applications. The AppxPackages.xml file can be found at: %APPDATALOCAL%\FSLogix\AppxPackages.xml
. Setting this value to 0 will disable the feature.
IsDynamic
Type: DWORD
Default Value: 1
Data values and use: If set to 1 the VHD(X) that is created will be dynamic. If set to 0 the created VHD(X) will be fixed size.
This setting is used with the SizeInMBs setting to manage the size of Profile containers. Setting IsDynamic to 1 causes the Profile container to use the minimum space on disk, regardless of the allocated SizeInMBs. As space is consumed, the size on disk will grow up to the size specified in SizeInMBs. SizeInMBs is the maximum size that a user will be allowed to use on disk. If the user's Profile container grows beyond what is specified in SizeInMBs the user will experience errors.
Note
Setting IsDynamic to 1 does NOT allow the Profile container to grow larger than what is specified in SizeInMBs.
KeepLocalDir
Type: DWORD
Default Value: 0
Data values and use: 1: The local_%username%
folder will be left on the system, after sign-out. It will also be used again if the same user signs on again.
LockedRetryCount
Type: DWORD
Default Value: 12
Data values and use: Specifies the number of retries attempted when a VHD(X) file is locked (open by another process or computer).
LockedRetryInterval
Type: DWORD
Default Value: 5
Data values and use: Specifies the number of seconds to wait between retries (see LockedRetryCount).
NoProfileContainingFolder
Type: DWORD
Default Value: 0
Data values and use: 1: Profile Container won't use or create a SID containing folder for the VHD(X) file.
This setting is intended for situations where storage provides a location that is already unique per-user.
Important
Be sure you understand how conflicting settings are applied and prioritized.
- This setting will override ANY OTHER setting related to container folders.
- SIDDIRNameMatch has NO EFFECT when used in conjunction with this setting.
- SIDDIRNamePattern has NO EFFECT when used in conjunction with this setting.
- FlipFlopProfileDirectoryName has NO EFFECT when used in conjunction with this setting.
OutlookCachedMode
Type: DWORD
Default Value: 1
Data values and use: 0: Prevents FSLogix from doing anything with cached mode. 1: Only when the Profile Container is attached, the Outlook setting that enables cached mode will temporarily be set until the container is detached. This setting ensures cached mode is used only when the container is attached.
Important
Outlook must be configured for online mode for this feature to work. This insures if FSLogix gets disabled, that large OST files won't be downloaded. Online mode registry entry: HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\office\16.0\Outlook\OST\NoOST:DWORD = 2
. FSLogix will override this setting for the current user.
PreventLoginWithFailure
Type: DWORD
Default Value: 0
Data values and use: If set to 1 Profile Container will load FRXShell if there's a failure attaching to, or using an existing profile VHD(X). The user will receive the FRXShell prompt - default prompt to call support, and the users only option will be to sign out.
PreventLoginWithTempProfile
Type: DWORD
Default Value: 0
Data values and use: If set to 1 Profile Container will load FRXShell if it's determined a temp profile has been created. The user will receive the FRXShell prompt - default prompt to call support, and the users only option will be to sign out.
ProfileDirSDDL
Type: REG_SZ
Default Value: N/A
Data values and use: SDDL string representing the ACLs to use when creating the profile directory.
ProfileType
Type: DWORD
Default Value: 0
Data values and use: 0: Normal profile behavior. 1: Machine should only be the RW profile instance. 2: Machine should only be the RO profile instance. 3: Machine should try to take the RW role and if it can't, it should fall back to a RO role.
Important
- All sessions trying to use the VHD concurrently must have a ProfileType of 1, 2, or 3. If the VHD isn't accessed concurrently, ProfileType should be 0.
- OneDrive does not support multiple simultaneous connections / multiple concurrent connections, using the same profile, under any circumstances. Please see the OneDrive documentation on this topic** and CCDLocations.
ReAttachRetryCount
Type: DWORD
Default Value: 60
Data values and use: Specifies the number of times the system should attempt to reattach the VHD(X) container if it's disconnected unexpectedly.
ReAttachIntervalSeconds
Type: DWORD
Default Value: 10
Data values and use: Specifies the number of seconds to wait between retries when attempting to reattach the VHD(X) container if it's disconnected unexpectedly.
RebootOnUserLogoff
Type: DWORD
Default Value: 0
Data values and use: A value of '0' means, "Take no action". A value of '1' means, "Reboot when any user signs out". A value of '2' means, "Reboot when a FSLogix Profile user signs out".
RedirectType
Type: DWORD
Default Value: 2
Data values and use: A value of '1' means, Use legacy redirection. A value of '2' (default) means, Use FSLogix advanced redirection.
RedirXMLSourceFolder
Type: REG_SZ
Default Value: N/A
Data values and use: For example: C:\Windows\System32
or \\servername\sharename
If the folder contains a redirections.xml, it will be copied to the local profile and immediately used.
Supported variables are:
%username%
%userdomain%
%sid%
%osmajor%
%osminor%
%osbuild%
%osservicepack%
%profileversion%
%clientname%
RemoveOrphanedOSTFilesOnLogoff
Type: DWORD
Default Value: 0
Data values and use: A value of '0' or lack of this setting results in no action. A value of '1' will cause duplicate OST files to be removed.
Note
Review the following, in full, before setting. In rare cases, duplicate OST files are created for a user. This circumstance has been documented to occur with and without the use of a non-persistent profile. When the profile is stored in the standard file system, administrators may remove orphaned or stale OST files by deleting them. When using Profile Container the OST file in a VHD, isn't as visible. Over long periods of time duplicate OST files may consume incremental disk space. Setting this option to 1 will cause Profile Container and Profile Container for Office to remove all OST files in a VHD(X), except the OST with the latest modify date. Administrators should be familiar with the use of OST files, and potential implications, before choosing to enable this setting.
RoamIdentity
Type: DWORD
Default Value: 0
Data values and use: Allows legacy roaming for credentials and tokens created by the Web Account Manager (WAM) system. Set to '1' to enable the feature.
Important
The default setting is to not roam the credentials or tokens which is the preferred setting. While this may not be the ideal configuration for some customers, we created this setting to provide customers a way to roam these items similarly to FSLogix v2201 hotfix 2 (2.9.8228.50276).
Note
We continue to work with our Identity teams on a long term solution.
RoamSearch
Type: DWORD
Default Value: 0
Data values and use: Used to control the Profile Container Search Roaming feature. Set to '1' or '2' to enable the feature. See Configure Search Roaming for details.
Important
- RoamSearch is set prior to GPOs being applied, it is not possible to rely on GPOs to set RoamSearch in environments where a GoldImage is applied at boot.
- Windows Server 2019 and Windows 10 Enterprise multi-session support per user search. RoamSearch should not be enabled in these environments.
SetTempToLocalPath
Type: DWORD
Default Value: 3
Data values and use: A value of '0' means, "Take no action". A value of '1' means, "Redirect TEMP and TMP to the local drive". A value of '2' means, "Redirect INetCache to the local drive". A value of '3'means, "Redirect TEMP, TMP, and INetCache to the local drive."
ShutdownOnUserLogoff
Type: DWORD
Default Value: 0
Data values and use: A value of '0' means, "Take no action". A value of '1' means, "Shutdown when any user signs off", a value of '2' means, "Shutdown when a FSLogix Profile user signs off".
SIDDirNameMatch
Type: REG_SZ
Default Value: %sid%_%username%
Data values and use: Specifies a string pattern used when matching a Profile or ODFC container folder. Use this setting to define how FSLogix will attempt to locate a users Profile or ODFC container. FSLogix will use the VHDLocations or CCDLocations as the location where to search and this setting defines what to search.
Supported variables are:
%username%
%userdomain%
%sid%
%osmajor%
%osminor%
%osbuild%
%osservicepack%
%profileversion%
%clientname%
Important
Be sure you understand how conflicting settings are applied and prioritized.
- When using this configuration setting, be sure the SIDDIRNamePattern value matches this setting.
- This setting has NO EFFECT when FlipFlopProfileDirectoryName is enabled.
- This setting has NO EFFECT when NoProfileContainingFolder is enabled.
- NoProfileContainingFolder > FlipFlopProfileDirectoryName > SIDDirNameMatch (this setting)
SIDDirNamePattern
Type: REG_SZ
Default Value: %sid%_%username%
Data values and use: Specifies a string pattern used when creating a Profile or ODFC container folder. Use this setting to define how FSLogix will attempt to create a users Profile or ODFC container folder. FSLogix will use the VHDLocations or CCDLocations as the location where to create and this setting defines what to create.
Supported variables are:
%username%
%userdomain%
%sid%
%osmajor%
%osminor%
%osbuild%
%osservicepack%
%profileversion%
%clientname%
Important
Be sure you understand how conflicting settings are applied and prioritized.
- When using this configuration setting, be sure the SIDDIRNameMatch value matches this setting.
- This setting has NO EFFECT when FlipFlopProfileDirectoryName is enabled.
- This setting has NO EFFECT when NoProfileContainingFolder is enabled.
- NoProfileContainingFolder > FlipFlopProfileDirectoryName > SIDDirNamePattern (this setting)
SIDDirSDDL
Type: REG_SZ
Default Value: N/A
Data values and use: SDDL string representing the ACLs to use when creating the SID container folder.|
SizeInMBs
Type: DWORD
Default Value: 30000
Data values and use: Specifies the maximum size of the user's container in megabytes. Newly created VHD(x) containers will be of this size. Existing containers will be extended automatically to this size during user sign in. You can increase this value at anytime, but cannot decrease it. Decreasing this value will not cause existing VHD(x) containers to shrink.
VHDNameMatch
Type: REG_SZ
Default Value: Profile*
Data values and use: Specifies a string pattern used when matching a users Profile container. Use this setting to define how FSLogix will attempt to locate a users Profile container (VHD(x) file). FSLogix will use the VHDLocations or CCDLocations as the location where to search and this setting defines what to search.
Supported variables are:
%username%
%userdomain%
%sid%
%osmajor%
%osminor%
%osbuild%
%osservicepack%
%profileversion%
%clientname%
Important
When using this configuration setting, be sure the VHDNamePattern value matches this setting.
VHDNamePattern
Type: REG_SZ
Default Value: Profile_%username%
Data values and use: Specifies a string pattern used when creating a users Profile container. Use this setting to define how FSLogix will attempt to create a users Profile container (VHD(x) file). FSLogix will use the VHDLocations or CCDLocations as the location where to search and this setting defines what to create.
Supported variables are:
%username%
%userdomain%
%sid%
%osmajor%
%osminor%
%osbuild%
%osservicepack%
%profileversion%
%clientname%
Important
When using this configuration setting, be sure the VHDNameMatch value matches this setting.
VHDLocations
(required setting)
Type: MULTI_SZ or REG_SZ
Default Value: N/A
Data values and use: A list of file system locations to search for the user's profile VHD(X) file. If one isn't found, one will be created in the first listed location. If the VHD path doesn't exist, it will be created before it checks if a VHD(X) exists in the path. These values can contain variables that will be resolved. When specified as a REG_SZ value, multiple locations can be separated with a semi-colon.
Supported variables are:
%username%
%userdomain%
%sid%
%osmajor%
%osminor%
%osbuild%
%osservicepack%
%profileversion%
%clientname%
VHDXSectorSize
Type: DWORD
Default Value: 0
Data values and use: Sector size to use if the file being created is a VHDX. Currently can only be 512 (0x200) or 4096 (0x1000). Setting of 0 (default setting) results in system default being used.
VolumeType
Type: REG_SZ
Default Value: vhd
Data values and use: A value of vhd means that newly created files should be of type VHD. A value of vhdx means that newly created files should be of type VHDX.
VolumeWaitTimeMS
Type: DWORD
Default Value: 20000
Data values and use: Specifies the number of milliseconds the system should wait for the volume to arrive after the VHD(X) has been attached. Default value of 20000 = 20 seconds
ODFC Container Settings
The following settings are applicable to ODFC containers and are created in the following location:
- Registry Hive: HKEY_LOCAL_MACHINE
- Registry Path: SOFTWARE\Policies\FSLogix\ODFC
AccessNetworkAsComputerObject
Type: DWORD
Default Value: 0
Data values and use: 0: default – attach as user. 1: attach as computer - folder must have permissions for computer objects.
Caution
Do not use this configuration setting unless your storage provider or architecture will NOT work with user-level permissions to the VHD(x) container locations. This setting will allow the virtual machine to access all the VHD(x) files on the storage provider creating a potential security risk.
AttachVHDSDDL
Type: REG_SZ
Default Value: N/A
Data values and use: SDDL string representing the ACLs to use when attaching the VHD.
DiffDiskParentFolderPath
Type: REG_SZ
Default Value: %TEMP%
Data values and use: Specifies the path where difference disks will be created when VHDAccessMode is configured to use them. Variables may be used in this value.
Supported variables are:
%username%
%userdomain%
%sid%
%osmajor%
%osminor%
%osbuild%
%osservicepack%
%profileversion%
%clientname%
Enabled
(required setting)
Type: DWORD
Default Value: 0
Data values and use: 0: ODFC Containers disabled. 1: ODFC Containers enabled
FlipFlopProfileDirectoryName
Type: DWORD
Default Value: 0
Data values and use: When set to 1 the SID folder is created as %username%_%sid%
instead of the default %sid%_%username%
.
Important
Be sure you understand how conflicting settings are applied and prioritized.
- This setting will OVERRIDE both SIDDirNameMatch and SIDDirNamePattern
- This setting has NO EFFECT when NoProfileContainingFolder is enabled
- NoProfileContainingFolder > FlipFlopProfileDirectoryName > (SIDDirNameMatch and SIDDirNamePattern)
IncludeOfficeActivation
Type: DWORD
Default Value: 1
Data values and use: 1: Office activation data is redirected to the container. 0: Office activation data isn't redirected to the container.
Note
This setting is specific to Office 2016 and later
1: Office Cache Data is redirected to the container. 0: Office Cache Data is not redirected to the container.
IncludeOneDrive
Type: DWORD
Default Value: 1
Data values and use: 1: OneDrive cache is redirected to the container. 0: OneDrive cache isn't redirected to the container.
Important
OneDrive does not support multiple simultaneous connections / multiple concurrent connections, using the same profile, under any circumstances. Please see the OneDrive documentation on this topic
IncludeOneNote
Type: DWORD
Default Value: 0
Data values and use: 1: OneNote notebook files are redirected to the container. 0: OneNote notebook files aren't redirected to the container.
IncludeOneNote_UWP
Type: DWORD
Default Value: 0
Data values and use: 1: OneNote UWP notebook files are redirected to the container. 0: OneNote UWP notebook files aren't redirected to the container.
IncludeOutlook
Type: DWORD
Default Value: 1
Data values and use: 1: Outlook data is redirected to the container. 0: Outlook data isn't redirected to the container.
IncludeOutlookPersonalization
Type: DWORD
Default Value: 1
Data values and use: 1: Outlook personalization data is redirected to the container. 0: Outlook personalization data isn't redirected to the container.
IncludeSharepoint
Type: DWORD
Default Value: 1
Data values and use: 1: Sharepoint data is redirected to the container. 0: Sharepoint data isn't redirected to the container.
IncludeSkype
Type: DWORD
Default Value: 1
Data values and use: 1: Skype for Business Global Address List is redirected to the container. 0: Skype for Business Global Address List isn't redirected to the container. |
IncludeTeams
Type: DWORD
Default Value: 0
Data values and use: 1: Teams data is redirected to the container. 0: Teams data isn't redirected to the container.
IsDynamic
Type: DWORD
Default Value: 1
Data values and use: If set to 1 the VHD(X) that is created will be dynamic. If set to 0 the created VHD(X) will be fixed size.
This setting is used with the SizeInMBs setting to manage the size of ODFC containers. Setting IsDynamic to 1 causes the ODFC container to use the minimum space on disk, regardless of the allocated SizeInMBs. As space is consumed, the size on disk will grow up to the size specified in SizeInMBs. SizeInMBs is the maximum size that a user will be allowed to use on disk. If the user's ODFC container grows beyond what is specified in SizeInMBs the user will experience errors.
Note
Setting IsDynamic to 1 does NOT allow the ODFC container to grow larger than what is specified in SizeInMBs.
LockedRetryCount
Type: DWORD
Default Value: 12
Data values and use: Specifies the number of retries attempted when a VHD(X) file is locked (open by another process or computer).
LockedRetryInterval
Type: DWORD
Default Value: 5
Data values and use: Specifies the number of seconds to wait between retries (see LockedRetryCount).
MirrorLocalOSTToVHD
Type: DWORD
Default Value: 0
Data values and use: 0: Do nothing with an existing OST file. 1: When a new VHD is created, and there are contents in the local OST folder, they'll be copied to the VHD before the user is given access. 2: When a new VHD is created, and there are contents in the local OST folder, they'll be moved to the VHD before the user is given access.
NoProfileContainingFolder
Type: DWORD
Default Value: 0
Data values and use: 1: Profile Container won't use or create a SID containing folder for the VHD(X) file.
This setting is intended for situations where storage provides a location that is already unique per-user.
Important
Be sure you understand how conflicting settings are applied and prioritized.
- This setting will override ANY OTHER setting related to container folders.
- SIDDIRNameMatch has NO EFFECT when used in conjunction with this setting.
- SIDDIRNamePattern has NO EFFECT when used in conjunction with this setting.
- FlipFlopProfileDirectoryName has NO EFFECT when used in conjunction with this setting.
NumSessionVHDsToKeep
Type: DWORD
Default Value: 2
Data values and use: This setting is used when VHDAccessMode is set to 3. This controls the number of session VHDs that are persistent. For example, if set to 2 and the user creates a third session, a new session VHD will be created and used, but it will be deleted when the third session ends.
OutlookCachedMode
Type: DWORD
Default Value: 1
Data values and use: 0: Prevents FSLogix from doing anything with cached mode. 1: Only when the ODFC Container is attached, the Outlook setting that enables cached mode will temporarily be set until the container is detached. This setting ensures cached mode is used only when the container is attached.
Important
Outlook must be configured for online mode for this feature to work. This insures if FSLogix gets disabled, that large OST files won't be downloaded. Online mode registry entry: HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\office\16.0\Outlook\OST\NoOST:DWORD = 2
. FSLogix will override this setting for the current user.
OutlookFolderPath
Type: REG_SZ
Default Value: %userprofile%\AppData\Local\Microsoft\Outlook
Data values and use: The path to the user's Outlook folder.
PreventLoginWithFailure
Type: DWORD
Default Value: 0
Data values and use: If set to one Profile Container will load FRXShell if there's a failure attaching to, or using an existing profile VHD(X). The user will receive the FRXShell prompt - default prompt to call support, and the users only option will be to sign out.
PreventLoginWithTempProfile
Type: DWORD
Default Value: 0
Data values and use: If set to one Profile Container will load FRXShell if it's determined a temp profile has been created. The user will receive the FRXShell prompt - default prompt to call support, and the users only option will be to sign out.
ReAttachRetryCount
Type: DWORD
Default Value: 60
Data values and use: Specifies the number of times the system should attempt to reattach the VHD(X) container if it's disconnected unexpectedly.
ReAttachIntervalSeconds
Type: DWORD
Default Value: 10
Data values and use: Specifies the number of seconds to wait between retries when attempting to reattach the VHD(X) container if it's disconnected unexpectedly.
RedirectType
Type: DWORD
Default Value: 2
Data values and use: A value of '1' means, Use legacy redirection. A value of '2' (default) means, Use FSLogix advanced redirection.
RefreshUserPolicy
Type: DWORD
Default Value: 0
Data values and use: When this setting is set to 1, then ODFC Container will overwrite the previous user setting with the GPO setting.
If a GPO is configured for an Office Product that is included in ODFC Container, there may be a conflict with a previous user setting. Standard behavior is for the GPO to be applied, but when the ODFC Container is read, the GPO will be over-written by the setting in ODFC Container. If the desire is for the GPO change to be universally applied, then this setting should be set to 1 prior to the GPO update being applied.
Important
There is a performance implication to setting RefreshUserPolicy to 1. RefreshUserPolicy should not be set, or should be set to 0, unless there is a specific GPO event. After the GPO event, the setting should be reverted to default
RemoveOrphanedOSTFilesOnLogoff
Type: DWORD
Default Value: 0
Data values and use: A value of '0' or lack of this setting results in no action. A value of '1' will cause duplicate OST files to be removed.
Important
Review the following, in full, before setting. In rare cases, duplicate OST files are created for a user. This circumstance has been documented to occur with and without the use of a non-persistent profile. When the profile is stored in the standard file system, administrators may remove orphaned or stale OST files by deleting them. When using Profile Container the OST file in a VHD, isn't as visible. Over long periods of time duplicate OST files may consume incremental disk space. Setting this option to 1 will cause Profile Container and Profile Container for Office to remove all OST files in a VHD(X), except the OST with the latest modify date. Administrators should be familiar with the use of OST files, and potential implications, before choosing to enable this setting.
RoamSearch
Type: DWORD
Default Value: 0
Data values and use: Used to control the Profile Container and ODFC Container Search Roaming feature. Set to '1' or '2' to enable the feature. See Roaming the Windows Search Database for details. See Configure Search Roaming for details.
Note
RoamSearch is set prior to GPOs being applied, it is not possible to rely on GPOs to set RoamSearch in environments where a GoldImage is applied at boot. NOTE: Windows Server 2019 and Windows 10 Enterprise multi-session support per user search. RoamSearch should not be enabled in these environments.
SIDDirNameMatch
Type: REG_SZ
Default Value: %sid%_%username%
Data values and use: Specifies a string pattern used when matching an ODFC container folder. Use this setting to define how FSLogix will attempt to locate a users ODFC container. FSLogix will use the VHDLocations or CCDLocations as the location where to search and this setting defines what to search.
Supported variables are:
%username%
%userdomain%
%sid%
%osmajor%
%osminor%
%osbuild%
%osservicepack%
%profileversion%
%clientname%
Important
Be sure you understand how conflicting settings are applied and prioritized.
- When using this configuration setting, be sure the SIDDIRNamePattern value matches this setting.
- This setting has NO EFFECT when FlipFlopProfileDirectoryName is enabled.
- This setting has NO EFFECT when NoProfileContainingFolder is enabled.
- NoProfileContainingFolder > FlipFlopProfileDirectoryName > SIDDirNameMatch (this setting)
SIDDirNamePattern
Type: REG_SZ
Default Value: %sid%_%username%
Data values and use: Specifies a string pattern used when creating an ODFC container folder. Use this setting to define how FSLogix will attempt to create a users ODFC container folder. FSLogix will use the VHDLocations or CCDLocations as the location where to create and this setting defines what to create.
Supported variables are:
%username%
%userdomain%
%sid%
%osmajor%
%osminor%
%osbuild%
%osservicepack%
%profileversion%
%clientname%
Important
Be sure you understand how conflicting settings are applied and prioritized.
- When using this configuration setting, be sure the SIDDIRNameMatch value matches this setting.
- This setting has NO EFFECT when FlipFlopProfileDirectoryName is enabled.
- This setting has NO EFFECT when NoProfileContainingFolder is enabled.
- NoProfileContainingFolder > FlipFlopProfileDirectoryName > SIDDirNamePattern (this setting)
SIDDirSDDL
Type: REG_SZ
Default Value: N/A
Data values and use: SDDL string representing the ACLs to use when creating the SID container folder.|
SizeInMBs
Type: DWORD
Default Value: 30000
Data values and use: Specifies the maximum size of the user's container in megabytes. Newly created VHD(x) containers will be of this size. Existing containers will be extended automatically to this size during user sign in. You can increase this value at anytime, but cannot decrease it. Decreasing this value will not cause existing VHD(x) containers to shrink.
VHDAccessMode
Type: DWORD
Default Value: 0
Data values and use: 0: Normal direct access behavior. This is the simplest access model, but only allows one concurrent session. 1: A difference disk will be used and stored on the network. This allows for simultaneous session access. This mode shouldn't be used if the ODFC Container is being used with Outlook Cached Exchange mode. 2: A difference disk will be used and stored on the local machine. This allows for simultaneous session access. This mode shouldn't be used if the ODFC Container is being used with Outlook Cached Exchange mode. 3: A unique VHD(X) will be used for each concurrent session. These VHD(X) files will typically persist so that they can be used the next time a user creates a session. To control the number of VHD(X) files that will persist, see the NumSessionVHDsToKeep setting.
Warning
- OneDrive does not support multiple simultaneous connections / multiple concurrent connections, using the same profile, under any circumstances. Please see the OneDrive documentation on this topic
- If the ODFC Container is being used with Outlook cache mode, VHDAccessMode 0 or 3 must be used.
VHDNameMatch
Type: REG_SZ
Default Value: ODFC*
Data values and use: Specifies a string pattern used when matching a users ODFC container. Use this setting to define how FSLogix will attempt to locate a users ODFC container (VHD(x) file). FSLogix will use the VHDLocations or CCDLocations as the location where to search and this setting defines what to search.
Supported variables are:
%username%
%userdomain%
%sid%
%osmajor%
%osminor%
%osbuild%
%osservicepack%
%profileversion%
%clientname%
Important
When using this configuration setting, be sure the VHDNamePattern value matches this setting.
VHDNamePattern
Type: REG_SZ
Default Value: ODFC_%username%
Data values and use: Specifies a string pattern used when creating a users ODFC container. Use this setting to define how FSLogix will attempt to create a users ODFC container (VHD(x) file). FSLogix will use the VHDLocations or CCDLocations as the location where to search and this setting defines what to create.
Supported variables are:
%username%
%userdomain%
%sid%
%osmajor%
%osminor%
%osbuild%
%osservicepack%
%profileversion%
%clientname%
Important
When using this configuration setting, be sure the VHDNameMatch value matches this setting.
VHDLocations
(required setting)
Type: MULTI_SZ or REG_SZ
Default Value: N/A
Data values and use: A list of file system locations to search for the user's ODFC VHD(X) file. If one isn't found, one will be created in the first listed location. If the VHD path doesn't exist, it will be created before it checks if a VHD(X) exists in the path. These values can contain variables that will be resolved. When specified as a REG_SZ value, multiple locations can be separated with a semi-colon.
Supported variables are:
%username%
%userdomain%
%sid%
%osmajor%
%osminor%
%osbuild%
%osservicepack%
%profileversion%
%clientname%
VHDXSectorSize
Type: DWORD
Default Value: 0
Data values and use: Sector size to use if the file being created is a VHDX. Currently can only be 512 (0x200) or 4096 (0x1000). Setting of 0 (default setting) results in system default being used.
VolumeType
Type: REG_SZ
Default Value: vhd
Data values and use: A value of vhd
means that newly created files should be of type VHD
. A value of vhdx
means that newly created files should be of type VHDX
.
VolumeWaitTimeMS
Type: DWORD
Default Value: 20000
Data values and use: Specifies the number of milliseconds the system should wait for the volume to arrive after the VHD(X) has been attached. Default value of 20000 = 20 seconds
Cloud Cache Settings
The following settings are applicable to Cloud Cache configurations.
Global Cloud Cache Settings
The following configuration settings are Cloud Cache specific and are used for ALL Cloud Cache implementations whether applied to Profile or ODFC container(s).
CacheDirectory
Registry Hive: HKEY_LOCAL_MACHINE
Registry Path: SYSTEM\CurrentControlSet\Services\frxccd\Parameters
Value Name: CacheDirectory
Value Type: REG_SZ
Default Value: C:\ProgramData\FSLogix\Cache
Data values and use: This value specifies the location of the local cache VHD(x).
Important
- CacheDirectory and ProxyDirectory MUST NOT be the same location as the Proxy File and the Cache File are the same name and will conflict.
- It's critical to locate the local cache VHD(x) on storage that is highly available and high performing. Storage that is appropriate for the local cache VHD(x) will have performance and availability characteristics similar to SSD or NVMe attached storage. CacheDirectory is set prior to Group Policy being applied, it is not possible to rely on Group Policy to set CacheDirectory in environments where a "gold image" is applied at boot.
WriteCacheDirectory
Registry Hive: HKEY_LOCAL_MACHINE
Registry Path: SYSTEM\CurrentControlSet\Services\frxccds\Parameters
Value Name: WriteCacheDirectory
Value Type: REG_SZ
Default Value: C:\ProgramData\FSLogix\Cache
Data values and use: This setting specifies where the files are located that control what data needs to be written to the CCDLocations. These files contain a list of sectors that need to be written to the CCDLocations. For each set, the data is read from the local cache VHD(x) in the CacheDirectory then written to the CCDLocations. Each location has its own write cache list since they may flush at different speeds.
ProxyDirectory
Registry Hive: HKEY_LOCAL_MACHINE
Registry Path: SYSTEM\CurrentControlSet\Services\frxccds\Parameters
Value Name: ProxyDirectory
Value Type: REG_SZ
Default Value: C:\ProgramData\FSLogix\Proxy
Data values and use: Specifies the location of the local proxy stub file.
Important
- CacheDirectory and ProxyDirectory MUST NOT be the same location as the Proxy File and the Cache File are the same name and will conflict.
- Although it is possible to change the location of the ProxyDirectory setting, it is strongly recommended that this is only done when there is no C drive.
- This location contains no data.
SilenceACLWarning
Registry Hive: HKEY_LOCAL_MACHINE
Registry Path: SYSTEM\CurrentControlSet\Services\frxccds\Parameters
Value Name: SilenceACLWarning
Value Type: DWORD
Default Value: 0
Data values and use: 1: Disables the event log warning when the proxy or cache ACLs don't match the default values. Review the default values before setting this value.
Container Specific Settings
A Cloud Cache configuration may be used for Profile and / or ODFC container(s).
- Profiles Registry Key: HKLM\SOFTWARE\FSLogix\Profiles
- ODFC Registry Key: HKLM\SOFTWARE\Policies\FSLogix\ODFC
Important
- CCDLocations and VHDLocations may not both be present at the same time.
- Cloud Cache settings are only valid when used with CCDLocations in either Profiles or ODFC configurations.
CCDLocations
(Required Setting)
Type: REG_SZ / MULTI_SZ
Default Value: N/A
Data values and use: Specifies the storage type and location of Cloud Cache remote containers. CCDLocations should be used instead of VHDLocations. CCDLocations supports SMB and Azure Blob types with up to four remote container locations. When setting CCDLocations, the first location will be the primary storage provider and will be the only provider used for read operations, unless it becomes unhealthy. All storage providers are used when content needs to be written to the VHD(x) files.
Tip
- Don't use spaces around delimiters.
- Values are always case-sensitive.
CCDLocations are formatted using a type and a connectionString separated using a ; as the delimiter. The type will accept either smb or azure. The connectionString for smb type must include the full UNC path to the file share. The connectionString for azure type must include the full connectionString as found from the Access Keys section of the storage account. When configuring multiple azure location types, the connectionString must be surrounded by double quotation marks.
- CCDLocations using SMB:
type=smb,connectionString=\\Location1\Folder1;type=smb,connectionString=\\Location2\folder2
- CCDLocations using Azure (unsecure):
type=azure,connectionString="DefaultEndpointsProtocol=https;AccountName=*storage-account-name*;AccountKey=*account-key*;EndpointSuffix=*end-point-suffix*"
- CCDLocations using Azure (secure):
type=azure,connectionString="DefaultEndpointsProtocol=https;AccountName=|fslogix/accountname|;AccountKey=|fslogix/accountkey|;EndpointSuffix=|fslogix/endpointsuffix|"
Caution
Do not use the unsecure method for Azure storage locations in a Production environment. Production workloads should only use Azure storage locations when the connection string is secured using Credential Manager. See the Configure Cloud Cache Tutorial for step-by-step instructions.
CcdMaxCacheSizeInMBs
Note
- Requires FSLogix v2009 or later (2.9.7654.46150)
- Setting is not available in Group Policy templates
Type: DWORD
Default Value: 0
Warning
Using CcdMaxCacheSizeInMBs causes FSLogix to perform extra steps including, re-writing data that may have once been in local cache, maintain a manifest of flushed data, and other tasks which require significant compute resources. Using CcdMaxCacheSizeInMBs will negatively impact performance, regardless of the size specified, although larger sizes will somewhat decrease the performance impact. Using CcdMaxCacheSizeInMBs increases storage I/O and network traffic.
Depending on the configuration and use, the storage IO and Network traffic increase could be substantial. Setting the CcdMaxCacheSizeInMBs value below 200 will have a significant effect on system performance. CcdMaxCacheSizeInMBs is an advanced configuration option and requires thorough planning as it will have impacts to the overall performance of the profile solution.
CcdMaxCacheSizeInMBs specifies the maximum local cache size in megabytes, per user, during normal operation. Normal operation assumes that all Cloud Cache providers are available, and that storage performance is adequate to accept I/O at the rate necessary to accommodate profile utilization. Setting CcdMaxCacheSizeInMBs to 0 (default value) means that Cloud Cache doesn't attempt to limit the size of the local cache. This setting isn't designed to limit the size of the local cache during failure scenarios, but is rather intended to provide predictable operation during normal operation. When CcdMaxCacheSizeInMBs is set, the local cache will be allowed to expand to the maximum size, at which point blocks will be removed from the local cache as they're written to the remote Cloud Cache providers. The algorithm for removing blocks from local cache is a ‘black box’, it isn't configurable and isn't documented. If a provider isn't available, each user’s local cache will be allowed to expand until the disk where it resides is out of disk space. This is the only operating model and is designed to utilize resources in the most efficient way possible prior to impacting the user's experience.
CcdMaxCacheSizeInMBs Examples
Normal Operation
Host A has a maximum of 10 users, and CcdMaxCacheSizeInMBs set to 1000 MB (1 GB), and the host has 20 GB of disk space available. Assuming that all remote providers are available and have appropriate performance, the maximum size of each local cache VHD(x) will be 1 GB. This will ensure that only 10 GB of the 20 GB available on the host is utilized for local cache VHD(x).
Failure Scenario
Host A has a maximum of ten (10) users, and CcdMaxCacheSizeInMBs set to 1000 MB (1 GB), and the host has 20 GB of disk space available. Seven (7) users are active, and three (3) users are idle. Two remote Cloud Cache providers are configured, and one of those providers becomes unavailable. Each users local cache VHD(x) will continue to expand to support normal operation. This will continue, as needed, until the remote providers become available and the local cache is able to be flushed to the remote providers. If the remote provider doesn't return to operation before the local cache VHD(x) utilize all storage on the host, the result will be the same as if the system drive runs out of disk space. The user will be impacted in a negative way up to and including session failures and/or data loss.
Regardless of the scenario above, during a failure event active users may utilize more than their assigned 1 GB while idle users may consume less. This is by design.
ClearCacheOnLogoff
Type: DWORD
Default Value: 0
Data values and use: By default, the local cache VHD(x) won't be removed when the user signs out. If a user accesses a system where it's desirable to have the local cache VHD(x) deleted when they sign out, set this value to 1.
Cloud Cache provider registration settings overview
Caution
Please read the following section before attempting to use these settings.
Traditionally, Cloud Cache had rigid behavior when all defined providers weren't available at user sign-in and sign out. Specifically, users would never trigger an error during sign-in, even if no Cloud Cache providers were available. Also, at sign-out, if any Cloud Cache provider wasn't available the user's sign out would be prevented indefinitely. In most scenarios, where Cloud Cache providers point to highly available storage that would rarely, if ever, be unavailable for extended periods, these settings are ideal for insuring data integrity. In some scenarios, users have expressed a desire for more granular control over these behaviors. The following settings allow configuration of Cloud Cache behavior during disk register (associated with user sign-in) and disk unregister (associated with user sign-out) events. When configuring any settings associated with disk register or unregister events, verify that you're familiar with the concepts, and that the configurations achieve your data integrity goals. Various setting combinations could cause local profile data to be discarded with no Cloud Cache providers being updated. The result of clearing the local cache, without flushing to a Cloud Cache provider, is the permanent deletion of the user's session data stored in the local cache.
The following settings may be used, with Profile Container and/or ODFC Container when using Cloud Cache.
HealthyProvidersRequiredForRegister
Type: DWORD
Default Value: 0
Data values and use: Defines the number of required 'healthy' storage providers necessary for a successful user sign-in. When set to 0, users will always be allowed to sign in even if no Cloud Cache providers are available.
This setting specifies the number of healthy Cloud Cache providers required to allow a sign-in. If a user signs in with no available providers, FSLogix assumes that one or more Cloud Cache providers will become available prior to the user signing out. If a Cloud Cache provider doesn't become available during the time of the user session, then the user is prevented from signing out (discussed in HealthyProviderRequiredForUnregister). If it's desired to block a user from signing in and a minimum number of Cloud Cache providers aren't available, the HealthyProvidersRequiredForRegister may be set to the number of providers required for a sign-in. If the minimum number of providers required for registration aren't available, then the sign-in will fail. When setting HealthyProvidersRequiredForRegister to anything other than 0, then PreventLoginWithFailure and / or PreventLoginWithTempProfile should be used in order to create the desired user experience.
HealthyProvidersRequiredForUnregister
Type: DWORD
Default Value: 1
Data values and use: Defines the number of required 'healthy' storage providers necessary for a successful user sign-out. If the number of available providers at sign-out is less than the number set, the user's sign out will be prevented for the time specified in CcdUnregisterTimeout.
Note
Although HealthyProvidersRequiredForUnregister may be set to 0, it is NOT recommended. When set to 0, ClearCacheOnForcedUnregister and CcdUnregisterTimeout will have NO EFFECT. Setting the value to 0 may cause the permanent deletion of the user session data stored in the local cache, without the protections built in through CcdUnregisterTimeout and ClearCacheOnForcedUnregister.
CcdUnregisterTimeout
Type: DWORD
Default Value: 0
Data values and use: 0: The user sign out will be held until the number of providers specified in HealthyProvidersRequiredForUnregister are available. Change the value to the number of seconds a user's sign out will be delayed if the number of available providers is less than the value specified in HealthyProvidersRequiredForUnregister.
Caution
When set to 0 and the number of providers specified in HealthyProvidersRequiredForUnregister is not met, then the user's sign out may be held infinitely.
ClearCacheOnForcedUnregister
Type: DWORD
Default Value: 0
Data values and use: 0: Will retain the local cache when the storage provider is unregistered when the CcdUnregisterTimeout expires. 1: Removes all local cache when the storage provider is unregistered when the CcdUnregisterTimeout expires.
CCDUnregisterTimeout is set to specify the number of seconds to wait prior to allowing a user session to be closed, even if a successful flush to a Cloud Cache provider hasn't occurred. If ClearCacheOnLogoff is set, the local cache will be deleted, even if the data in the local cache hasn't been flushed to a Cloud Cache provider. To preserve the user data in the local cache, when a user session is forced to close, local cache is NOT deleted in this scenario (Even if ClearCacheOnLogoff is set). This allows user data to be recovered from the local cache, however the local cache VHD(x) must then be managed (deleted) manually after user data is restored.
Caution
Setting ClearCacheOnForcedUnregister to 1 may result in user data saved in the registry during the current session to be lost. It is important to understand that this data isn't recoverable if the local cache is cleared in this scenario. Verify that you understand the implications of changing the default value of this setting prior to making changes.