This blog post provides a description of FsLogix components and command line tools.
FsLogix components architecture
There are five main components of the Agent. The command-line utility, service, two drivers, and the IE Browser Helper Object. All of these components are installed in the main application installation directory at C:\Program Files\FSLogix\Apps.
##frx.exe The command-line utility, frx.exe, lets you manage rule sets and many other features of FSLogix Apps. A reference of all commands the command-line utility accepts may be found here. The utility is installed to c:\program files\fslogix\apps.
The service, frxsvc.exe, communicates with the Command Line (frx.exe) and Drivers (frxdrv.sys and frxdrvvt.sys), as well as monitors the rules directory for changes.
The service starts automatically when the computer starts and remains running while the computer is powered on.
frxdrv.sys and frxdrvvt.sys
The frxdrv.sys driver is a combined File System Filter driver and Registry Filter driver (mini-filter). It is responsible for handling file system and registry requests to make hiding and redirection work.
The frxdrvvt.sys driver is a File System Filter driver (mini-filter). It provides the advanced redirection functionality used by FSLogix solutions.
IE Browser Helper Objects – frxlauncher.exe and frx_plugin_*.dll
The FSLogix Apps browser helper object is necessary for Java virtualization.
The Internet Explorer Browser Helper Object is comprised of the following files:
frx_plugin_ie_helper_x64.dll frx_plugin_ie_Win32.dll frx_plugin_ie_x64.dll frxlauncher.exe
These DLLs are registered only if Java Rules are present in the environment.
frxcontext.exe allows you to manage FSLogix containers as well as aid in managing containers by adding context menu’s to vhd(x) files. A reference for frxcontext.exe is found here
Frxrobocopy is used to exclude the file copy, done by the FSLogix agent, from Anti-virus scanners.
Since the FSLogix agent only copies files that have already been scanned by the AV product, the admin can use this feature to bypass scanning of the files to improve system performance.
To enable this frxrobocopy:
- Copy robocopy.exe to the %Program Files%\FSLogix\Apps folder as frxrobocopy.exe
- Add an exclusion for the anti-virus product for %Program Files%\FSLogix\Apps\frxrobocopy.exe
If frxrobocopy.exe exists in the FSLogix\Apps folder, it will be used and the AV product will not scan the file copying activity.
In order to achieve the desired behavior in some circumstances. Processes must be hooked with an FSLogix User mode module. These include Outlook to maintain a per user search database and printers in order to be hidden properly depending on the user. Logs for User mode may be found in the User mode log.
Configuration for the User mode DLL: Registry Key: HKLM\SOFTWARE\FSLOGIX\UserModeDll
|Value Name||Value Type||Default Value||Description|
|OutlookSearchComponentEnabled||DWORD||1||0 – Disabled, Outlook search will be handled by Windows. 1 – Enabled, Outlook search may be handled by FSLogix|
|PrinterComponentEnabled||DWORD||0||Required to make Printer hiding work across all OSs. 0 – Disabled, Printer hiding will work in some situations, but not all. 1 – Enabled, Printer hiding will successfully hide printers on all operating systems.|
|ProcInitTimeoutMs||DWORD||N/A||Allows the user to specify a maximum allowed time in milliseconds for the User mode Dll injection to succeed before moving on.|
FsLogix command line tools
FSLogix Command-Line Utility
In a default FSLogix Apps installation, frx.exe is found in ..\ProgramFiles\FSLogix\Apps. More details on the FsLogix command line utility usage can be found at: https://docs.microsoft.com/en-us/fslogix/command-line-utility-reference
FSLogix Disk Management Utility
frxcontext.exe allows you to manage FSLogix containers and aid in managing containers by adding context menu’s to vhd(x) files. More details on the tool usage can be found at: https://docs.microsoft.com/en-us/fslogix/disk-management-utility-reference
FsLogix profile compacting script
FsLogix mounts a virtual hard drive at the C:\Users\%UserName% folder for each user who connects. A huge advantage to this is that it is not copying the profile in at logon (or out at logoff), which greatly reduces logon times. Depending on how you have things setup you can literally (not figuratively) expect logon times of around 15 seconds reported in director no matter how your users decide to bloat their profiles. There is one “problem” with dynamic vhd/vhdx profiles… they don’t shrink on their own. For instance, if you were to copy a 4GB file into a dynamic vhd file you would obviously see it grow by about that much. If you delete that 4GB file the vhd stays the same size! This isn’t really that big of a deal to me, but it might be to my storage administrator.
There is a Powershell script to compact the vhd(x) profiles not in use.
Windows 10 – Powershell v5
Hyper-V module (Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All) – reboot required
Powershell run as Administrator
What this script does:
- Checks to make sure the above requirements are met
- Loads functions and variables (you will have to edit some of them for your environment – see the script for more info)
- Gets a list of all vhd/vhdx files in the root of your profile share
- Runs a for each loop
- Tests to see if the vhd file is currently locked (in use)
- If yes it will display a message on your screen saying it is locked and that it is being skipped (in the report the Success column will be marked with locked)
- If no then it will move on
- Tries to mount the vhd in read only mode
- If it fails it will send you an alert email and end the script as something is not right
- If it mounts then the script moves on
- Tries to optimize the vhd file (compact)
- Gets the original size in MB, size after compact in MB, computes the total reduction in MB, and notes failure/success
- Tries to dismount the vhd
- If it fails it will send you an alert email and end the script
- Tests to see if the vhd file is currently locked (in use)
- Once finished it will email you a report like the one below (names, paths, and sids are masked obviously)