Windows
FlexxAgent supports 64-bit Windows operating systems; it cannot be installed on 32-bit systems. The installation binary is available with and without a graphical interface, making it fully compatible with unattended deployment mechanisms and the installation wizard.
FlexxAgent consists of a Windows service called FlexxAgent Service, which manages two processes: FlexxAgent (process), which runs at the system level, and FlexxAgent Analyzer (process), which starts for each user session.
This structure enables FlexxAgent to address multiple session devices, such as terminal servers, Citrix, or AVD, and acquire detailed metrics to enhance diagnostic capabilities.
For example, if a person is working on their laptop, the FlexxAgent process would run at the system level and FlexxAgent Analyzer would run from the user's identity. If the device hosts multiple user sessions, in addition to FlexxAgent at the system level, FlexxAgent Analyzer will run for each user session on that device.
Consumption
In terms of resource requirements, FlexxAgent has very modest consumption, hovering around the following values:
- Disk space used: < 200 MB
- CPU: < 0.5%
- RAM: 100-200 MB
FlexxAgent Process (system)
- For resource consumption information, including performance counters, hardware, sessions, profiles, disks, partitions, and Windows services, the default value is 60 seconds.
- Event log error events are sent every 10 minutes.
- User profile information is obtained every 15 minutes.
FlexxAgent Analyzer Process (user)
- Includes application usage analysis, diagnostic data, and user experience.
- Data is collected locally every 15 seconds.
- The report is sent to the service every 5 minutes, although this metric can change in specific functionalities.
These values can be adjusted in Settings
on the different consoles, providing flexibility to meet specific needs.
Supported versions
The operating systems compatible with FlexxAgent are those still within the manufacturer's support cycle. Although installation is allowed on versions without such support, certain functionalities might not be available.
Microsoft operating systems with full support and compatibility are:
- Microsoft Windows 10 or later
- Microsoft Windows Server 2016 or later
FlexxAgent can also be installed on Windows 7 and 8.1 SP1, Windows Server 2008 R2 SP1, and Windows Server 2012, but it will be subject to some limitations.
Software Requirements
FlexxAgent also requires certain software components:
- .NET Framework 4.6.2 or later, Flexxible recommends installing
.NET Framework 4.8
. - Windows PowerShell 4.0 or later (Windows PowerShell 5.1 recommended)
- Note: The Azure PowerShell execution policy should be set to
Unrestricted
.
- Note: The Azure PowerShell execution policy should be set to
Considerations for Windows versions in EOL
Windows versions in End of Life (EOL), meaning they are out of support, have some limitations in running FlexxAgent, which may cause certain functionalities to not be supported.
Limitations
Some limitations might disable its functionalities when using FlexxAgent on older Windows operating systems that are out of support:
- GPU consumption metric collection
- Flow execution
- End-user microservices execution
- Storage unit information
- For virtual devices, broker and hypervisor detection is not available for all providers.
- There is no User Input Delay (UID) data because this counter is only supported on Windows Server 2019 and later, and Windows 10, version 1809 and later.
Broker detection might not work for all brokers. There is no user input delay performance data as this counter does not exist in Windows 7 or Windows Server 2008 R2.
Windows 7 and 2008
The installation of FlexxAgent supports the Windows 7 x64 or Windows Server 2008 R2 SP1 operating system under the following conditions:
- The update KB4474419:
SHA-2 code signing support update for Windows Server 2008 R2, Windows 7, and Windows Server 2008: September 23, 2019
must be installed. - The update KB3140245:
Update to enable TLS 1.1 and TLS 1.2 as default secure protocols in WinHTTP in Windows
must be installed, and follow the instructions in theHow to enable TLS 1.1 and TLS 1.2 as default secure protocols in WinHTTP in Windows
section of the Microsoft support page. - Requires at least .NET Framework 4.6, but Flexxible recommends installing
.NET Framework 4.8
. - PowerShell 2.0 with Windows 7 is not compatible with the required TLS 1.2 version to install FlexxAgent.
Windows Management Framework 5.1
is required to be installed, which installs PowerShell 5.1.
Windows 8 and 2012
The installation of FlexxAgent supports the Windows 8 operating system under the following conditions:
.NET Framework 4.6.2
is required, Microsoft blocks the installation of later versions of .NET Framework on Windows 8.0.- All Windows security updates are required to ensure
compatibility with TLS 1.2 and SHA-2 code signing
.
Download
INSTALLATION BINARY DOWNLOAD WITHOUT GRAPHICAL INTERFACE
The download of FlexxAgent without a graphical interface is done from Workspaces
-> Level 2
-> Reporting Groups
.
In the list view table, you must select the reporting group for which you want to download the agent and click on the Download FlexxAgent
button.
A window will open to download the FlexxAgent installer.
-
If the
Generate standalone installer (offline)
option is selected, during installation, the binary will not require internet access for verification or downloading binaries. -
If, on the other hand, the
Generate standalone installer (offline)
option is not selected, the minimal installation package will be downloaded. In this manner, the binary will access the internet to verify and download the latest binaries.
Unattended Deployment
FlexxAgent supports being launched through unattended deployment methods, such as GPO distribution, Intune, SSCM, and many more tools.
Installation
The unattended installation of FlexxAgent is done via PowerShell.
Start-Process "<ruta>\FlexxAgent-Installer.exe" -ArgumentList "<agregar parámetro>" -WindowStyle Hidden -Wait
Uninstall
To uninstall FlexxAgent unattended:
"C:\Program Files\Flexxible\FlexxAgent\VDIServiceUpdater.exe" /Uninstall "C:\Program Files\Flexxible\FlexxAgent\FlexxAgent.exe" /quiet
The Microsoft Windows installer used to uninstall FlexxAgent does not delete all files, folders, registry keys, or registry values created during the installation of FlexxAgent. If you need a clean system image, you can safely delete the following files, folders, registry keys and registry values.
Files
C:\Windows\Prefetch\FLEXXAGENT.EXE-XXXXXXXX.pf
– where XXXXXXXX is a string of letters and numbersC:\Windows\Temp\FlexxAgentInstallation.log
Folders
C:\Program Files\Flexxible
C:\ProgramData\Flexxible
Reinstallation
To reinstall FlexxAgent on a device removing its preexisting configuration, execute:
FlexxAgent-Installer.exe -repairAgent
For example:
Start-Process "<ruta>\FlexxAgent-Installer.exe" -ArgumentList "-repairAgent true" -WindowStyle Hidden -Wait
Uninstallation Protection
This feature allows protecting the uninstallation process of FlexxAgent to prevent a user from uninstalling it from devices. Configuration can be performed at the Product level and at the Reporting Group level.
Considerations
- Only an Organization Administrator user can configure it.
- Version 25.4.2 of FlexxAgent must be installed.
- By default, the feature is disabled.
Configuration at Product Level
- Go to
Portal
->Settings
->Products
. - In the table, choose the environment where you want to execute the functionality, and in the
Action
field click onAgent Settings
. - In the form, enable or disable the
FlexxAgent Uninstallation Protection
button. - Click on
Save
.
Configuration at Reporting Groups Level
The feature can be executed on one or several reporting groups.
Enable protection for a reporting group
- Go to
Portal
->Settings
->Reporting Groups
. - In the table, choose the reporting group where you want to execute the functionality, and in the
Action
field click onAgent Settings
. - In the form, edit the
FlexxAgent Uninstallation Protection
feature (pencil-shaped button) to choose whether to enable or disable it. - Click on
Save
.
The reporting groups inherit the configuration made at the Product level; however, they can overwrite their own configuration.
Enable protection for multiple reporting groups
- Go to
Portal
->Settings
->Reporting Groups
. - In the table, select the reporting groups where you want to execute the functionality.
- Click on
Edit uninstallation protection
. Three options will be displayed:
- Enable uninstallation protection: protects the reporting groups against the uninstallation of FlexxAgent (this option will not be available if the feature is already enabled at the Product level).
- Disable uninstallation protection: allows users to uninstall FlexxAgent (this option will not be available if the feature is already disabled at the Product level).
- Reset uninstall protection: applies the configuration of its Product to the reporting group, whether enabled or disabled.
A device will have FlexxAgent Uninstallation Protection enabled in the following cases:
- The feature is enabled in the reporting group to which it belongs.
- The feature is deactivated in the reporting group (it is neither enabled nor disabled), but it is enabled at the Product level.
Ways to uninstall FlexxAgent with protection enabled
If a user has the feature enabled but needs to uninstall FlexxAgent, they will have two options:
- Move the device to a reporting group that does not have protection enabled.
- Via a token:
- Go to
Portal
->Workspaces
and select the device. - Execute the action
Reveal uninstall token
which will display a unique token for that device valid until 23:59:59 UTC the next day. - Go to the Windows Control Panel and uninstall FlexxAgent by entering the token.
Before managing the uninstallation of FlexxAgent through tools like Intune or custom scripts, move the desired devices to a reporting group that does not have protection enabled.
Flexxible recommends having a reporting group with Uninstall Protection disabled, to facilitate uninstallation tasks of FlexxAgent on devices.
Known Issues
FlexxAgent installation
Issue 1 - Windows Management Instrumentation (WMI)
During the installation and/or reinstallation of FlexxAgent, if the computer encounters issues generated by the Windows Management Instrumentation (WMI) service, the process might report these errors in the CMD window:
Solution
Run the following commands:
Stop-Service winmgmt -Force
winmgmt /resetrepository
Start-Service winmgmt
Issue 2 - PowerShell process restriction
Some security solutions do not allow the installation and/or self-update of FlexxAgent to be performed effectively. The installer might return the message:
The process was terminated with errors. A corrupted installation was detected due to external processes. This is usually caused by antivirus activity. Please check your antivirus settings.
Solution
Exclude the following files from the device:
C:\Windows\Temp\FlexxibleIT
C:\Windows\Temp\UpdateFlexxAgent.ps1
FlexxAgent uninstallation
Issue - FlexxAgent remains in the service list
It may happen that FlexxAgent keeps appearing in the service list even though it has been uninstalled and all files have been deleted. This would prevent FlexxAgent from being reinstalled.
Solution
Run the following command as administrator in the CMD window:
sc delete "FlexxAgent service"
Then, restart the device.
Supported Parameters
Parameter | Type | Caption | |
---|---|---|---|
proxyAbsoluteUri | [string] | Proxy URL and port. | |
proxyUser | [string] | User for authenticated proxy. | |
proxyPass | [string] | Password for authenticated proxy. | |
proxyPersistConfig | [switch] | If specified, the configuration is persisted in the registry. | |
configFilePath | [string] | Alternative directory for the FlexxAgent-Configuration.conf file. | |
DebugMode | [switch] | When specified, creates a text file in the same folder with the script execution transcription. | |
RepairAgent | [bool] | Removes the preexisting configuration of FlexxAgent when it is reinstalled on a device. | |
Help | [switch] | Lists the supported parameters, with type and description. |
Proxy Configuration
FlexxAgent supports transparently configured proxies at the system level without configuring. Proxies with and without authentication are also supported. Proxy configuration can be done via the command line or by modifying registry keys that control this configuration.
Proxy configuration through command line
Installation with parameters:
FlexxAgent-Installer.exe -proxyAbsoluteUri ip.ad.dre.ss:port -proxyPersistConfig:$True
Where ip.ad.dre.ss:port refers to the IP or DNS plus the proxy port, or including credentials:
FlexxAgent-Installer.exe -proxyAbsoluteUri ip.ad.dre.ss:port -proxyUser ProxyUserName -proxyPass ProxyUserPassword -proxyPersistConfig:$True
FlexxAgent may not have access to the proxy applied in its configuration if it is outside the corporate network. To determine its accessibility, FlexxAgent tries to resolve the DNS record and makes a TCP request to the corresponding port. If the proxy is not accessible, it will report it directly (without proxy).
Configuration through registry keys
Location of the registry keys that store the proxy configuration for FlexxAgent:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Flexxible\FlexxAgent\Communications
Registry keys related to the proxy configuration:
Key Proxy_URL
- Key path:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Flexxible\FlexxAgent\Communications
- Key Name: Proxy_URL
- Key type: REG_SZ
- Supported values: the URL and port; for example 'http://192.168.1.1:3128' or 'https://192.168.1.1:3128'
Key Proxy_User
- Key path:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Flexxible\FlexxAgent\Communications
- Key Name: Proxy_User
- Key type: REG_SZ
- Supported values: the username to authenticate to the proxy; for example 'Administrator'. It can be bypassed for unauthenticated proxies.
Key Proxy_Pwd
- Key path:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Flexxible\FlexxAgent\Communications
- Key Name: Proxy_Pwd
- Key type: REG_SZ
- Supported values: The password to authenticate to the proxy. It can be bypassed for unauthenticated proxies.
The value of the Proxy_Pwd key can be set in plain text (not recommended) or base64 encoded and enclosed by «&&&». For example:
&&&VGhpc0lzTjArQCQzY3VyZVBAJCR3MHJk&&&
for the “Proxy_Pwd” value. In either case, FlexxAgent encrypts the value as soon as FlexxAgent starts or tries to transmit information. You can use a site like https://www.base64encode.org/ to create the base64-encoded password string.
Taking into account that FlexxAgent triggers a process at the system level (FlexxAgent.exe) and another at the session level (FlexxAgent Analyzer.exe), and depending on how the proxy acts at one level or the other, it may be necessary to apply different configurations to both processes by defining the Proxy Type
. This can be done from the FlexxAgent Settings, in Products
.
Manual Update
Go to Workspaces
-> Level 1
-> Workspaces
-> Operations
-> FlexxAgent
-> Update FlexxAgent
.
The different installed versions are in the dropdown option for My filters
-> Predefined filters
-> FlexxAgent version summary
. This will generate a view of all devices grouped by the FlexxAgent version.
Once the update operation is executed, a Job
with all the details of the operation will be generated in the corresponding section.
Logs
FlexxAgent can generate three types of logs:
These records allow consulting information and diagnosing problems from the installation of FlexxAgent.
Installation and update logs
A text log file is left in the C:\Windows\Temp\Flexxible
folder, containing information about the installation or update process, as well as dependency information and process details.
FlexxAgent Analyzer logs
FlexxAgent Analyzer logs are stored in the %LOCALAPPDATA%\FAAgent\Logs
directory. These can be configured to include or not include information by levels of criticality.
Change log level for FlexxAgent Analyzer
From Workspaces, it is possible to change the log level for one or more devices through the options available in the Operations
button.
FlexxAgent service logs
FlexxAgent service logs can be consulted in the Application
branch, within the Event Viewer
of Windows.
Information obtained from the device
FlexxAgent collects data locally from the device and sends it to the service consoles.
General information
- Name: device name
- Device status: power status of the device. It can be On, Off, or Not reporting.
- Summary status: if the device status is Powered off, it can indicate whether it is Under maintenance or just Powered off. If the device status is Unreported, it can indicate if the reason is Unknown.
- FlexxAgent Version: version number of FlexxAgent installed on the device
- FlexxAgent Status: Running or Stopped
- Last FlexxAgent report: date and time of the last FlexxAgent report on the device. This date might not be recent if the FlexxAgent service is stopped or the device is off.
- Connection type: indicates whether the device is connected by Wi-Fi, Mobile network, Ethernet, or Unknown.
When the connection is made via a wireless LAN network, a message may appear indicating that the device has a 0% signal or that FlexxAgent is not sending reports. This occurs because the Windows location service is disabled on the device. Please check this link to learn how to enable it.
- Network: device network addressing and public IP for internet access. These networks are created automatically when more than four devices are connected to the same network.
- Subnet: device's network addressing
- MAC Address: unique identifier of the device's network card
- Network changed: date and time of the last network change
- Sessions: number of user sessions established on the device
- Last User: last user connected to the device in domain\account format
- Connected from: when the selected device is a VDI or similar, it shows the name of the device from which the virtual device is accessed.
- Connection time: session start date and time
- Domain: domain to which the device belongs
- Code: this field lets users identify the workspace with a personal code. This code must be manually filled in individually using the Edit option in the Operations menu of the workspace details.
- OU: organizational unit in the domain where the device's account resides
- Description: allows the user to identify the device with a personal description. This field must be assigned manually and individually using the Edit option in the Operations menu of the device details.
Extended Info
- RAM: total amount of RAM available
- Cores: number of processor cores
- IP Address: device's IP address on the local network
- OS: type of operating system
- Operating System: operating system version
- OS Build: operating system build number
- Uptime: time the device has been running since it was last started or rebooted. If fastboot is enabled, the device is only off when it is restarted.
- Idle time: indicates the time elapsed since the last input event was received in the user's FlexxAgent session. Shows 0 if the user is effectively using any input device connected to the device.
- Latest Windows update: date of the last application of updates on the device
- Last boot duration: boot duration of the last startup
- Reboot Pending: shows if the device requires a reboot for updates.
- Windows type: type of Windows operating system: Client or Server
- System disk: amount of free disk space compared to total capacity
- Public IP of ISP: the ISP is obtained using the public IP. It might not be accurate if connected to a corporate network or using a VPN.
- Region: obtained using the public IP. It might not be accurate if connected to a corporate network or using a VPN.
- Broker type: if detected, shows the broker in use.
- Hypervisor: if virtualization is detected, shows the hypervisor in use.
- Delivery Group: for VDIs, shows the delivery group to which the device belongs.
- Subscription / Broker: Microsoft Azure or Citrix service that manages user connections to the device
- Registration status: indicates the registration status of the virtual device.
- Maintenance mode: indicates whether the maintenance mode of the virtual device is On or Off.
- Virtual machine type: indicates the type of virtual device.
- Session Analyzer: indicates whether or not it is configured to launch Session Analyzer in all the user sessions.
- Session Analyzer version: Session Analyzer version number
- Report group: reporting group to which the device belongs
- BIOS manufacturer: name of the device's firmware manufacturer
- BIOS version: version of the device's firmware
- SMBIOS version: version of the device's System Management BIOS
- BIOS serial number: unique number assigned to the device by its manufacturer. Available only if the manufacturer decided the device needed one.
- Google Chrome Version: Google Chrome build number, if installed.
- Microsoft Edge Version: Microsoft Edge build number, if installed.
Information in tabs
FlexxAgent groups information about the following aspects of the device:
Sessions
Displays a table with the log of user sessions established on the device and timely information about the session type, connection status, or start date.
Performance
Displays graphs of the device's main performance counters, based on data collected over the last two hours. The following are included:
- CPU: processor usage percentage
- Memory: amount of memory used and available
- Bandwidth Usage: amount of incoming and outgoing traffic
- UID: user input delay. Refers to the time lapse between the moment a user performs an action, such as clicking a mouse button or pressing a key, and the moment the corresponding response is displayed on the screen or executed.
- Connection Signal: signal reception percentage when the device connects via a wireless method.
At the top, a link grants access to the Analyzer module.
Job
All actions performed from the Workspaces module on one or more devices are audited in the Jobs queue. This tab allows you to check the work done for the active device.
Alert
Presents a table with the list of all active alerts on the device. When an alert is logged, a notice is displayed at the top of the page.
Event Logs
Information about the events present on the device. By default, errors are filtered and only those with severity level Error or Critical are shown. FlexxAgent obtains this information at 10-minute intervals.
The available settings allow you to modify the sampling time or include events by their ID.
Connection Log
Presents a list of the connections established with the device, including each instance where a user logs in or reconnects a previously disconnected session.
The session end date is recorded only for sessions that have been disconnected or closed. While the session remains active, this field will remain empty.
Windows services
This option displays the status of services and performs start, restart, or stop operations on Windows services.
Disks
Displays a list of all partitions present on the disks identified in the system, as well as statistics of their capacity and occupancy levels.
Boot history
Displays a graph showing the duration of the last ten boots of the device.
Notifications
Allows you to see if the device has any active notification. When there is one, a message is displayed at the top of the page.
Security
From this section, you can check the name of the antivirus installed on the device, as well as its version number, execution status, and a graph on its RAM and CPU usage. This same information will be shown if FlexxAgent detects CrowdStrike as Endpoint Detection and Response (EDR).
Antivirus detection is automatic only on the Windows Client operating system (Windows 7 or later). On Windows Server, only Bitdefender and Windows Defender will be detected, and these will be the only ones to show RAM and CPU usage.
Compliance
Allows viewing the status of the compliance policy configured for the active device. To update this field on demand, click on Operations
-> Enforce compliance
.
Group Policy (GPO)
Displays information about the group policies applied on the active device. Allows you to see the names of the policies as well as the verification time.
PnP Devices
Displays Plug and Play (PnP) devices that are in an error state, which may be due to hardware failures or incorrect driver or device configuration.
At the bottom of this view, a table shows all events related to PnP devices, creating an entry each time a peripheral is connected or disconnected.
System Summary
Displays system information for Windows devices. Includes:
Field | Detail |
---|---|
OSVersion | Operating system version number |
OtherOSDescription | Additional description of the current operating system version (optional) |
OSManufacturer | Nombre del fabricante del sistema operativo. In the case of Windows-based systems, this value is "Microsoft Corporation" |
SystemModel | Product name given by a manufacturer to a piece of equipment |
SystemType | System running on the Windows-based equipment |
SystemSKU | Stock keeping unit (SKU) product information (optional) |
Processor | Name, number of cores, and number of logical processors of the processor |
BIOSReleaseDate | BIOS Release Date |
EmbeddedControllerVersion | Primary and secondary firmware versions of the embedded controller, separated by "." |
BaseBoardManufacturer | Name of the organization responsible for manufacturing the physical device |
BaseBoardProduct | Manufacturer-defined part number for the motherboard |
BaseBoardVersion | Version of the physical device |
PlatformRole | Type of chassis where Unspecified = 0, Desktop = 1, Mobile = 2, Workstation = 3, EnterpriseServer = 4, SOHOServer = 5, AppliancePC = 6, PerformanceServer = 7, MaximumValue = 8 |
WindowsDirectory | Operating system's Windows directory |
SystemDirectory | Operating system's system directory |
BootDevice | Name of the disk drive from which the Windows operating system starts |
Locale | Name Identifier of language used by the operating system |
TimeZone | Name of the operating system time zone |
PageFileSpace | Actual amount of disk space allocated for use as a page file, in megabytes |
PageFile | Name of the page file |
BIOSMode | Device boot mode (BIOS or UEFI) |
SecureBootState | Secure boot mode status (Off, On) |
Reporting groups history
Allows you to see which reporting groups the device belongs to, the date of incorporation, and if it has been assigned to the group manually or automatically.