How does ProfileDisk get configured on client machines? What does LwL.ProfileUnity.Client.Startup.exe do?
This article explains how ProfileUnity configures ProfileDisk on client machines â covering the clientsettings.xml file generated by the Management Console, how LwL.ProfileUnity.Client.Startup.exe consumes it, and the resulting update to LwlLogonNotifier.exe.config. It also covers the full logon-time workflow, prerequisites, common deployment scenarios, and a reference for the key clientsettings.xml fields.
đ Contents
- âē How the Configuration Flow Works
- âē Prerequisites
- âē Step 1 â Configure ProfileDisk in the Management Console
- âē Step 2 â Deploy clientsettings.xml to the Network Share
- âē Step 3 â Run LwL.ProfileUnity.Client.Startup.exe
- âē What Gets Written to LwlLogonNotifier.exe.config
- âē Logon-Time Workflow
- âē CAC / Smart-Card Mode Setup
- âē Deployment Scenarios
- âē Troubleshooting
- âē clientsettings.xml Field Reference
- âē Related Articles
How the Configuration Flow Works
ProfileDisk configuration follows a three-stage pipeline:
-
Management Console â
clientsettings.xml. After you define a ProfileDisk group in the Console (Administration â ProfileDisk), the Console generates an encryptedclientsettings.xmlfile containing the broker connection, license server, FlexDisk service endpoint, disk mode, virtual disk path, size, and group-to-AD-group assignments. -
clientsettings.xmlâ Deployment Share. You deploy this file to the NETLOGON share (or the custom path shown under Administration â ProfileUnity Tools â Deployment Path) so that machines can reach it at logon time or during image preparation. -
LwL.ProfileUnity.Client.Startup.exeâLwlLogonNotifier.exe.config. The Startup executable readsclientsettings.xml, decrypts the relevant sections, and writes the ProfileDisk configuration intoC:\Program Files\ProfileUnity\FlexApp\LwlLogonNotifier.exe.config. At user logon, the NP credential manager (mpnotify.exe) reads this config and launchesLwlLogonNotifier.exeto mount the correct VHDX.
clientsettings.xml is stored on a network share and is readable by all machines. Its sensitive values (connection strings, license endpoint) are encrypted. LwlLogonNotifier.exe.config is a local machine file written during startup or image preparation, keeping the logon-time path fast and offline-tolerant.
Prerequisites
- ProfileUnity Console and Client Tools must be on the same version. See the ProfileUnity Version Matrix for current build numbers.
- A dedicated file share for ProfileDisk VHDX files is recommended. Grant the Domain Computers group Create / Read / Modify permissions on the share and the folder that will contain the per-user VHDX files.
- Create an AD group to assign users to the ProfileDisk configuration group.
-
Secondary Logon service: ProfileDisk mounts the VHDX using an impersonation token by default. If the Secondary Logon service is disabled, add the registry value
pdusecomputerperms=1(DWORD) underHKLM\Software\Liquidware Labs\ProfileUnityon the master image or via GPO before running the Startup executable. See How to enable ProfileDisk with Secondary Logon Disabled. - CAC / smart-card environments: Additional Kerberos delegation steps are required. See ProfileDisk not Mounting in Highly Secured Environments using CAC Authentication and the CAC Best Practices guide.
- Server OS used as a desktop: VHD/VHDX mounting on Server editions requires the Hyper-V role or VHD-mount capability. See ProfileDisk does not mount on Server Operating Systems used as a desktop.
Step 1 â Configure ProfileDisk in the Management Console
- In the Management Console, navigate to Administration â ProfileDisk.
- Click Add ProfileDisk Group and configure:
- AD Group Assignment â the group whose members will receive this ProfileDisk.
- Storage Type â VHD or VHDX (VHDX recommended for Windows 8.1/Server 2012 R2 and later).
-
Virtual Disk Path â UNC path with the
%username%variable, e.g.\\server\ProfileDiskShare\ProfileDisk\%username%\%username%.vhdx. - Disk Size â initial size in GB (expandable disks grow as needed up to this limit).
- Disk Format â Fixed or Expandable.
- Multi-Session â enable if users may log on to multiple machines simultaneously (e.g. RDS/Citrix).
- Click Save Assignments, then Update.
- Verify that Communication Type to Broker Messages is set to VHDX ProfileDisk. Click Update if you change it.
Step 2 â Deploy clientsettings.xml to the Network Share
After saving the ProfileDisk group, the Console updates its internal clientsettings.xml. You must push this file to the deployment share so that clients can read it.
- In the Management Console, go to Administration â ProfileUnity Tools.
- Click Download or Deploy Client Settings. Confirm the Deployment Path shown (typically
\\domain\NETLOGON\ProfileUnityor a custom share) is correct. - Check Overwrite existing files and click Deploy.
- Verify that
clientsettings.xmlis present in the deployment share and has been updated (check the file's last-modified timestamp).
Whenever you upgrade the Console, redeploy both the client tools zip and
clientsettings.xml from the same Administration page. Client tools and the Console must be on the same build. See the Version Matrix for compatibility rules.
The deployed clientsettings.xml uses an encrypted format for connection strings. The plaintext structure contains these logical sections (see Field Reference below for details):
<?xml version="1.0" encoding="utf-8"?>
<ProfileDiskConfig xmlns:xsi="..." xmlns:xsd="..." version="3.0">
<MqConnectionString>[encrypted]</MqConnectionString>
<LicenseServerConnectionString>[encrypted]</LicenseServerConnectionString>
<FlexDiskConnectionString>[encrypted]</FlexDiskConnectionString>
<DiskMode>VHD</DiskMode>
<ProfileDiskConfigGroups>
<ProfileDiskConfigGroup>
<Assignments>
<Assignment name="domain\AD-Group" sid="S-1-5-..." />
</Assignments>
<MultiSession>True</MultiSession>
<VirtualDiskCompression>False</VirtualDiskCompression>
<VirtualDiskFormat>Expandable</VirtualDiskFormat>
<VirtualDiskPath>\\server\share\%username%\%username%_.vhdx</VirtualDiskPath>
<VirtualDiskSizeInGb>20</VirtualDiskSizeInGb>
</ProfileDiskConfigGroup>
</ProfileDiskConfigGroups>
<LicenseMode>NamedUser</LicenseMode>
</ProfileDiskConfig>
Step 3 â Run LwL.ProfileUnity.Client.Startup.exe
LwL.ProfileUnity.Client.Startup.exe is the bootstrap executable that reads clientsettings.xml from the deployment share and updates the local client configuration. It must run in the SYSTEM context (or with local admin rights) so it can write to C:\Program Files\ProfileUnity\FlexApp\.
How it locates clientsettings.xml
By default the executable looks in the same directory from which it is launched. When launched via GPO Computer Startup Script (the recommended method), the path is the UNC share path of the script itself, e.g.:
\\domain\NETLOGON\GPO-Name\LwL.ProfileUnity.Client.Startup.exe
You can override the path to clientsettings.xml with the registry value ClientSettingsPath (REG_SZ) under HKLM\Software\Liquidware Labs\ProfileUnity.
GPO Computer Startup Script (recommended)
The most reliable delivery mechanism is a Computer Configuration â Windows Settings â Scripts â Startup GPO, targeting the machines that will use ProfileDisk:
Name: \\domain\NETLOGON\GPO-Name\LwL.ProfileUnity.Client.Startup.exe Parameters: (none required)
If your GPO shows "Not configured" for Script order, the script still runs. Script order only matters when multiple startup scripts are configured in the same GPO and you need a specific sequence.
What the Startup executable does
- Reads
clientsettings.xmlfrom the deployment share path. - Decrypts the connection strings (MQ broker, license server, FlexDisk service).
- Evaluates the
ProfileDiskConfigGroupsassignments to determine which groups are configured. - Writes the resolved ProfileDisk configuration into
C:\Program Files\ProfileUnity\FlexApp\LwlLogonNotifier.exe.config. - Verifies that the local client tools are current; if the version on the share is newer, it updates the local installation in-place (persistent desktops only â non-persistent images should be recomposed).
What Gets Written to LwlLogonNotifier.exe.config
After a successful run of the Startup executable, the ProfileDisk section of C:\Program Files\ProfileUnity\FlexApp\LwlLogonNotifier.exe.config is populated with the decrypted endpoint addresses and the disk configuration for each assigned group. To verify the update was applied:
- Open
C:\Program Files\ProfileUnity\FlexApp\LwlLogonNotifier.exe.configin a text editor. - Confirm that the
ProfileDiskConfigsection contains the correctVirtualDiskPathfor your environment. - Confirm that the connection strings are present (they remain encrypted in this file).
Run the Startup executable once on the master image (or wait for the first GPO-driven machine reboot), then open
LwlLogonNotifier.exe.config and search for VirtualDiskPath. If the path matches what you configured in the Console, the client is correctly configured and ready for logon.
Logon-Time Workflow
Once LwlLogonNotifier.exe.config is in place, the following sequence occurs automatically each time a member of the assigned AD group logs on interactively. All executables reside in C:\Program Files\ProfileUnity\FlexApp\.
| # | Executable | Action | Log File |
|---|---|---|---|
| 1 | mpnotify.exe | NP notification and group membership check. Reads LwlLogonNotifier.exe.config, confirms interactive logon (Winsta0), resolves user's SID and group membership, constructs and launches the LwlLogonNotifier command line. |
lwl_cred_mgr_*.txt |
| 2 | LwlLogonNotifier.exe | VHDX attach. Resolves %username% in the virtual disk path, calls vhd.exe to attach the VHDX. On success, records the VHDX path and attach time in the registry. |
LwlLogonNotifier.log |
| 3 | vhd.exe | Low-level VHDX attach. Opens the VHDX file with read/write access and attaches it as a loopback disk (\\?\PhysicalDriveN). Exits RC=0 on success. |
vhd.log |
| 4 | mpnotify.exe | Mount point, cap import, and reparse. Locates the attached disk by volume label, creates C:\ProfileDiskMounts\<user>, imports userprofile.cap, sets reparse points via the Container Service. C:\Users\<user> redirects to the VHDX mount. |
lwl_cred_mgr_*.txt |
| 5 | lwl_profile_mgr.exe | Profile path setup and registry export. Applies Chrome/Edge user data directory policy keys, creates the AppV target dir, exports 12 ProfileList registry values to userprofile.cap on the VHDX for import at next logon. |
lwl_profile_mgr_*.txt |
Windows loads the user profile from the VHDX via the reparse point. userprofile.cap is re-imported by mpnotify at the start of the next logon (step 4). |
|||
All ProfileUnity client logs are written to
C:\Windows\Temp\ProfileUnity\. Key files:
-
lwl_cred_mgr_*.txtâ NP credential manager log; one file per logon event (host process ismpnotify.exefor interactive logons) -
LwlLogonNotifier.logâ VHDX attach/detach log -
vhd.logâ low-level VHD attach log -
lwl_profile_mgr_*.txtâ profile registry export/import log -
msiexec_monitor*.logâ Container Service application virtualization log
Programmatic logons (station name SvcCtl) are silently skipped; only interactive logons (station name Winsta0, Authentication Type: MSV1_0:Interactive or KERBEROS:Interactive) trigger the workflow.
CAC / Smart-Card Mode Setup
In environments that require CAC (Common Access Card) or smart-card authentication, the standard ProfileDisk logon flow breaks at step 1 because mpnotify.exe cannot obtain a usable Kerberos token from the smart-card logon to impersonate the user when accessing the VHDX file share. Two resolution options are available; Option 1 (computer account) is recommended.
Regardless of which option you choose, the
SmartCardLogonNotify registry value must be present on every client machine before users log on. Without it, the Network Provider is not notified of smart-card logon events and ProfileDisk will not mount.Key:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\NotifyValue:
SmartCardLogonNotify â DWORD â 1Deploy via GPO Registry preference or bake into the master image. A reboot is required after the value is set.
Option 1 â Computer account for VHDX access (recommended)
Uses the machine account (DOMAIN\ComputerName$) rather than the user's token to mount the VHDX, avoiding Kerberos delegation entirely.
-
Move ProfileDisk storage to a dedicated share. Update the
VirtualDiskPathin the Management Console to point to the new share, then redeployclientsettings.xml. The VHDX share must be separate from user home directories or roaming profiles. - Grant Domain Computers access to the VHDX share. Give the Domain Computers group Create / Read / Modify permissions on the share and the folder that will contain the VHDX files.
-
Enable ProfileDisk System Mount/Unmount via GPO ADMX. In the ProfileUnity Computer GPO, navigate to:
Computer Configuration â Administrative Templates â Classic Administrative Templates â Liquidware Labs â ProfileUnity. Under both the 32-bit and 64-bit sections, set ProfileDisk System Mount Unmount to Enabled. - Set the SmartCardLogonNotify registry value as described in the callout above, then reboot.
Option 2 â AD service account for VHDX access
- Create a dedicated service account in Active Directory with at least Read/Write permissions on the ProfileDisk VHDX share. If the account password expires, the credential file must be regenerated â consider maintaining two accounts for rotation.
-
Generate the credential file. In the Management Console, hover over your username (top right) â Administration â scroll to ProfileUnity Tools. Enter the service account credentials and click Download or Deploy Service Configuration. Place the resulting
LwL.ProfileUnity.Client.Service.exe.credsfile in the same NETLOGON folder as the ProfileUnity client tools. - Ensure Startup.exe runs on boot from that same path. For Horizon Instant Clones, re-run on the master image after any creds update.
- Enable ProfileDisk VHD CAC support via GPO ADMX. Under both the 32-bit and 64-bit sections, set ProfileDisk VHD CAC to Enabled.
- Set the SmartCardLogonNotify registry value as described in the callout above, then reboot.
The
lwl_cred_mgr_*.txt log will show:"Failed to create process like user: <profileunity.svc@domain>. Error: The service cannot be started, either because it is disabled or because it has no enabled devices associated with it."This error also appears when the Secondary Logon service is disabled (Option 2 only). If you see it with Option 1, confirm the GPO ADMX setting is applied and the machine has rebooted after the
SmartCardLogonNotify value was set.
Deployment Scenarios
| Environment | Recommended Method | Notes |
|---|---|---|
| Non-persistent VDI (gold image) | Run LwL.ProfileUnity.Client.Startup.exe during image preparation, then seal and recompose. |
Updated LwlLogonNotifier.exe.config is baked into the image. After a Console upgrade, update the image with new client tools and re-run the Startup executable before recomposing. |
| Persistent desktops | GPO Computer Startup Script pointing to \\NETLOGON\GPO-Name\LwL.ProfileUnity.Client.Startup.exe. |
The Startup executable handles in-place client-tool updates and refreshes LwlLogonNotifier.exe.config on each reboot. No reimage required after a Console upgrade. |
| RDS / Citrix (multi-session) | GPO Computer Startup Script on the session host; enable Multi-Session in the ProfileDisk group. | Each session host runs the Startup executable at boot. The multi-session flag allows the same VHDX to be opened concurrently from multiple sessions. |
| Secondary Logon disabled | Add pdusecomputerperms = 1 (DWORD) under HKLM\Software\Liquidware Labs\ProfileUnity before running the Startup executable. |
Switches the mount mechanism from impersonation to machine-account permissions. See KB: Secondary Logon Disabled. |
| CAC / smart-card | Follow the CAC Best Practices guide in addition to the standard steps. | See also KB: ProfileDisk not mounting in highly secured environments. |
| Server OS as desktop | Ensure the Hyper-V role (or equivalent VHD-mount capability) is installed. | See KB: ProfileDisk does not mount on Server OS used as a desktop. |
Troubleshooting
Start every investigation by collecting the logs from C:\Windows\Temp\ProfileUnity\ on the affected endpoint. The lwl_cred_mgr_*.txt log is the primary diagnostic source â one file is created per logon event.
pulog.txt) reflects only the outer MSI wrapper and will show success even when the client was not correctly installed or the Startup executable did not run. Always validate the endpoint state directly using the checks below.
ProfileDisk does not mount at logon â no error visible
| Check | What to Do |
|---|---|
No lwl_cred_mgr_*.txt log exists |
The Network Provider credential manager did not load. Confirm the ProfileUnity Client is installed and the service is running. Check that the client and console versions match â see the Version Matrix. |
| Log shows logon silently skipped | Look for station name SvcCtl in the log â this is a programmatic/service logon and is skipped by design. Only interactive (Winsta0) logons trigger ProfileDisk. |
| User is not a member of the assigned AD group |
lwl_cred_mgr_*.txt will show the user's resolved group list. Confirm the AD group assigned in the ProfileDisk Console group matches a group the user is actually a member of. |
LwlLogonNotifier.exe.config is missing or empty |
The Startup executable has not run successfully on this machine. For persistent desktops, confirm the GPO startup script is applied. For non-persistent VDI, confirm the image was prepared with the Startup executable before sealing. |
VirtualDiskPath in LwlLogonNotifier.exe.config is wrong or blank |
The Startup executable read a stale clientsettings.xml. Redeploy from the Management Console (Administration â ProfileUnity Tools â Download or Deploy Client Settings) and re-run the Startup executable. |
| Console and client version mismatch | A version mismatch between the Console and client tools can cause silent failures. Always redeploy client tools from Administration â ProfileUnity Tools after a Console upgrade and recompose or rerun the Startup executable on all endpoints. |
VHDX attach fails â error in LwlLogonNotifier.log or vhd.log
| Symptom | Cause and Resolution |
|---|---|
| Access denied to VHDX share | The account performing the mount (user token or machine account, depending on Secondary Logon configuration) does not have Read/Write on the VHDX share. Grant Domain Computers (for machine-account mounts) or the specific user/service account Create/Read/Modify on the share and the VHDX folder. |
| VHDX file path resolves incorrectly | Check the resolved path in LwlLogonNotifier.log. Confirm %username% substitution is working and the share path in clientsettings.xml matches the actual UNC path on the server. |
| VHDX already mounted / locked | Check if another session has the VHDX open. If Multi-Session is not enabled in the ProfileDisk group and the user is logging in from a second machine, the file will be locked. Enable Multi-Session for RDS/Citrix or concurrent-session environments. |
| VHDX does not exist yet (first logon) | On first logon, ProfileUnity creates the VHDX automatically. If creation fails, confirm the account has Create permission on the parent folder. Check LwlLogonNotifier.log for a specific creation error. |
| Server OS â VHDX does not mount | Windows Server editions require the Hyper-V role or VHD-mount capability. Install the Hyper-V role or confirm VHD-mount is available. See KB: ProfileDisk does not mount on Server OS used as a desktop. |
Startup executable runs but LwlLogonNotifier.exe.config is not updated
| Check | What to Do |
|---|---|
Startup executable cannot reach clientsettings.xml
|
Confirm the file exists at the share path the executable is being called from. If using a custom path, verify the ClientSettingsPath registry value is correct and accessible in SYSTEM context. |
| Residual file blocks the HF1 upgrade (6.9.5 known issue) | A defect in 6.9.5 GA and HF1 leaves LwL.ProfileUnity.Client.Startup.Update.exe.config in the Temp directory, causing the HF1 installer to silently skip. Delete the file from C:\Windows\Temp\ (SYSTEM context) or %TEMP%\ (user context) before re-running the HF1 installer. See the 6.9.5 HF1 Known Issue KB for full details. |
| Executable running as user, not SYSTEM | The Startup executable must run in SYSTEM context (or with local admin rights) to write to C:\Program Files\ProfileUnity\FlexApp\. Confirm the GPO is configured as a Computer Startup Script, not a User Logon Script. |
CAC / smart-card environments â ProfileDisk does not mount
| Symptom | Cause and Resolution |
|---|---|
| No mount attempt logged at all on smart-card logon |
SmartCardLogonNotify registry value is missing. The Network Provider is not notified of smart-card logon events without it. Set the DWORD value to 1 under HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify and reboot. |
| "Failed to create process like user" in log | Using Option 2 (service account) with Secondary Logon disabled, or the SmartCardLogonNotify value was just set but the machine has not rebooted yet. Either enable Secondary Logon, switch to Option 1, or reboot after setting the registry value. |
| Option 1 set but still using user-token mount | Confirm the GPO ADMX setting ProfileDisk System Mount Unmount is enabled under both the 32-bit and 64-bit ProfileUnity sections. A GPO refresh and machine reboot are required for the setting to take effect. |
| Option 2 credential file expired or missing | If the service account password has been rotated since the creds file was generated, regenerate it from Administration â ProfileUnity Tools and redeploy alongside the client tools. For Instant Clones, update the master image. |
clientsettings.xml Field Reference
The table below describes each element in clientsettings.xml. The connection string values are AES-encrypted by the Console and cannot be edited manually; all other values are plaintext and reflect what was configured in the Management Console.
| Element | Description |
|---|---|
| MqConnectionString | Encrypted connection string for the ProfileUnity broker message queue (RabbitMQ). Used by the client to communicate mount/unmount events back to the server. |
| LicenseServerConnectionString | Encrypted connection string for the ProfileUnity License Service. The client checks out a seat at logon. |
| FlexDiskConnectionString | Encrypted connection string for the FlexDisk Service (handles VHDX creation and management operations). |
| DiskMode | Options: VHD | VHDX. Disk format used for new ProfileDisk VHDs. VHDX is recommended for all current Windows versions. |
| LicenseMode | Options: NamedUser | ConcurrentUser. Must match the purchased license type. |
| ProfileDiskConfigGroup | Container for a single ProfileDisk group definition. Multiple groups may be present for different AD groups or disk locations. |
| Assignments / Assignment | The AD group (name = DOMAIN\Group, sid = group SID) whose members receive this ProfileDisk configuration. |
| MultiSession | Options: True | False. True allows the VHDX to be mounted concurrently across multiple sessions (required for RDS/Citrix). False is safer for single-session VDI and physical desktops. |
| VirtualDiskCompression | Options: True | False. Whether NTFS compression is applied to the VHDX file itself. Generally False â enabling compression can impact performance. |
| VirtualDiskFormat | Options: Expandable | Fixed. Expandable (thin-provisioned, grows up to VirtualDiskSizeInGb) or Fixed (full size allocated at creation). |
| VirtualDiskPath | UNC path to the per-user VHDX file. Supports %username% expansion. Example: \\server\share\ProfileDisk\%username%\%username%_.vhdx
|
| VirtualDiskSizeInGb | Maximum size of the VHDX in gigabytes. For expandable disks this is the ceiling, not the initial allocation. |
Related Articles
- ProfileDisk Full User Profile Delivery (Product Docs)
- How to add VHD/x ProfileDisk to your current ProfileUnity setup
- How to enable ProfileDisk with Secondary Logon Disabled
- ProfileDisk not Mounting in Highly Secured Environments using CAC Authentication
- ProfileDisk does not mount on Server Operating Systems used as a desktop
- CAC Authentication Best Practices Guide (Product Docs)
- ProfileUnity Version Matrix
- ProfileUnity Hot Fix List
| Product | Liquidware ProfileUnity with FlexApp |
| Applies To | ProfileUnity 6.8.6 and later |
| Updated | July 17, 2026 |