When you log on to a Windows XP-based computer that is running version 10.200 of the Citrix ICA client, Windows XP may create a user profile instead of loading your cached profile


Assume that you are using version 10.200 of the Citrix ICA (Independent Computing Architecture) client on a computer that is running Windows XP together with any Windows XP service pack. When you log on to the Windows XP-based computer, Windows XP may create a user profile instead of loading your cached profile. Similarly, duplicate profiles may be created for each user.

Additionally, if you enable USERENV logging, you see log entries that resemble the following:
USERENV(2ac.2b0) 16:35:57:459 Local Existing Profile Image is reachable
USERENV(2ac.2b0) 16:35:57:459 Local profile name is <C:\Documents and Settings\User_Name>
USERENV(2ac.2b0) 16:35:57:459 RestoreUserProfile: No central profile. Attempting to load local profile.
USERENV(2ac.2b0) 16:35:57:495 MyRegLoadKey: Failed to load subkey <S-1-5-21-1292428093-343818398-839522115-49106>, error =32
USERENV(2ac.2b0) 16:35:57:495 MyRegLoadKey: Returning 00000020
USERENV(2ac.2b0) 16:35:57:495 RestoreUserProfile: MyRegLoadKey returned FALSE.


This problem occurs because of a race condition that occurs when Winlogon.exe and the Citrix SSONSVR.exe startup process both try to access the Ntuser.dat file. Winlogon.exe tries to load the user profile while SSONSVR.exe startup is triggered by a Citrix network provider.


Microsoft and Citrix Systems have worked together to resolve this problem. We have agreed on the design changes that will be implemented in a new version of the Citrix client. Until the new Citrix client is available, use the workarounds that are described in this article.

For more information about when a new version of the Citrix ICA client will be available, contact Citrix support by visiting the following Citrix support Web site:Microsoft provides third-party contact information to help you find technical support. This contact information may change without notice. Microsoft does not guarantee the accuracy of this third-party contact information.


To work around this problem, you can disable prefetch for Windows XP applications or remove prefetch tracing for the SSONSVR.exe process. (For more information about what prefetch does, see the "More information" section.) Additionally, you can manually delete the unwanted user profiles. To delete the unwanted user profiles that are already created, follow the steps in the “How to delete unwanted user profiles” section.

Disable prefetch

You can disable prefetch on a persistent basis for all programs, or you can manually remove prefetch tracing only for the SSONSVR.exe process. To disable prefetch, use one of the following options, as appropriate.

Option 1: How to disable prefetch for the SSONSVR.exe process

To disable prefetch for the SSONSVR.exe process, each user must follow these steps before logging off or shutting down the computer.

  1. Open Windows Explorer.
  2. Move to the following folder:
  3. Locate and then delete the file that is used to prefetch the SSONSVR.exe process. The name of this file will resemble the following:
  4. Shut down or log off the computer.
Note You can also implement this solution by using a script that deletes the file at the time of shutdown or logoff.

Option 2: How to disable prefetch for all programs

Important This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base:
322756 How to back up and restore the registry in Windows

To disable the prefetch component for all programs, follow these steps:
  1. Click Start, click Run box, type regedit, and then click OK.
  2. Locate and then click the following registry subkey:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
  3. Double-click the EnablePreFetcher registry entry.
  4. In the Edit DWORD Value dialog box, type 2 in the Value data box, and then click OK.
  5. Exit Registry Editor.
  6. Restart the computer.
Important After the new Citrix client is available, install the new client, and then set the EnableFetcher value to 3 to re-enable prefetch functionality.

How to delete unwanted user profiles

Warning When you delete a user profile, you lose all data related to the profile, such as desktop settings, favorites, program-specific data that is contained in the "Application Data" folder, and the contents of the "My Documents" folder. Therefore, make sure that you delete only the profiles that you do not want to keep.
  1. Right-click My Computer, and then click Properties.
  2. In the System Properties dialog box, click the Advanced tab, and then click Settings in the User Profiles area.
  3. In the User Profile dialog box, select the individual profile that you want to delete.
  4. Click Delete, and then confirm the action.
  5. Click OK.

More Information

What is prefetch

Prefetch is a subsystem in Windows that preloads to memory all code that the system computes may be required to improve application startup speed. The preloading depends on the past behavior of the application startup when it was loaded into memory. Prefetch traces the page faults that occur for a process during the previous startup. Prefetch also traces activity in the System context that may occur simultaneously during the startup of an application. If no other process claims ownership of the activity in the System context, prefetch may log the activity as owned by the application process. To make sure that startup activities are recorded correctly, prefetch compares several application startup cycles and then sets a pattern.

Windows XP prefetch has been working successfully for several years. However, in this case, because SSONSVR.exe is started from a Citrix network provider, it coincidentally starts while the user’s profile is loaded. Prefetch considers that the System access of the Ntuser.dat file is part of the SSONSVR.exe process. Therefore, prefetch adds the loading of the user profile to the SSONSVR.exe prefetch file.

This condition can make the SSONSVR.exe process access a file like Ntuser.dat during startup without having any code or API call. Typically, this condition will not have any effect on the system. In this case, because Winlogon.exe tries to access the Ntuser.dat file at the same time, the issue that is described in the "Symptoms" section occurs.

Effect of disabling prefetch

When you disable the prefetch component, programs may take more time to load at program startup. However, in many systems, disabling the prefetch component may have a minimal effect. For example, if you do not start different programs on the computer frequently, the performance effect will be much less.


For more information about this problem, visit the following Citrix Web site:Microsoft provides third-party contact information to help you find technical support. This contact information may change without notice. Microsoft does not guarantee the accuracy of this third-party contact information.

The third-party products that this article discusses are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, about the performance or reliability of these products.

Номер статьи: 969100 — последний просмотр: 1 апр. 2009 г. — редакция: 1

Отзывы и предложения