Filename: SE165096.EXE
For: WinFrame Version 1.6
Replaces: WF160504, WF160511, WF160514, WF160516, WF160518, WF160520, WF160525,
          WF160526, WF160529, SE165033, SE165034, SE165035, SE165036, SE165041, 
          SE165042, SE165045, SE165052, SE165055, SE165060, SE165062, SE165064, 
          SE165065, SE165067, SE165068, SE165069, SE165073, SE165075, SE165076,
          SE165081, SE165082, SE165085, SE165086, SE165088, SE165091, SE165092, 
          SE165095
Language supported: English (US)

NOTE: You must install Service Pack 5 before applying this hotfix.


Description
-----------
This hotfix for Citrix WinFrame Version 1.6 addresses the
following issues:

1.  Microsoft Word 7.0b would cause a Dr. Watson trap while
    displaying certain documents at specific zoom levels.
    [From Hotfix WF160504]

2.  WinStations disappeared from WinStation Administration and
    could not be reset.
    [From Hotfix WF160511]

3.  A WinStation would trap due to receiving a bad packet.
    [From Hotfix WF160511]

4.  Installing Microsoft SNA Server Version 3.0 would cause a
    Dr. Watson trap in Program Manager.
    [From Hotfix WF160514]

5.  The WinFrame user configurations were not being replicated to
    a backup domain controller (BDC) from the primary domain
    controller (PDC).  The existing WinFrame user configurations
    must be migrated from the Registry of the PDC to the Security
    Accounts Manager (SAM) database using the CNVRTUC.EXE utility.
    (See usage information below.)

    Once the migration is accomplished, the replication of the
    WinFrame user configurations is performed using the normal
    policies governing the replication of the user account
    database from the PDC to one or more BDCs.

    Please note that the domain controller's Registry size
    increases because the user configuration is written to the
    SAM.  The size increase is approximately 1000 bytes per
    user configuration.
    [From Hotfix WF160518]

6.  A user would get a white screen during logon when another user
    had an unanswered popup related to a profile load error.  The
    white screen would last for five minutes or until the user
    acknowledged the popup.
    [From Hotfix WF160520]

7.  NetWare password synchronization failed if the WinFrame server
    name (computer name) exceeded 13 characters.
    [From Hotfix WF160525]

8.  A WinLogon event ID 1008 was logged in the System Event Log when
    users logged off.  The description for this event reads "Failed
    to unload the profile for user <username>".
    [From Hotfix WF160526]

9.  The PID no longer precedes the process name.  Start the
    Performance Monitor, add to the chart, and select the Object
    "Process".  The Instance listbox will no longer show the PID
    before each process name.
    [From Hotfix WF160529]

10. WFSHELL.EXE and NTVDM did not respond correctly to the Windows
    message WM_ENDSESSION.  This prevented those executables from
    exiting properly during a logoff attempt.
    [From Hotfix WF160529]

11. A WinStation would not reset when being debugged under NTSD.
    Once the system was in this state, it needed to be rebooted
    in order to reinitialize the WinStation.
    [From Hotfix SE165034]

12. On remote WinStations, some programs could not display text
    at the end of lines while scrolling horizontally.
    [From Hotfix SE165035]

13. Resetting a WinStation did not request applications to exit
    before killing them.  A WinStation reset now sends the
    WM_QUERYENDSESSION and WM_ENDSESSION messages to the currently
    running applications; the applications will then perform any
    necessary cleanup.
    [From Hotfix SE165036]

14. When debugging a WinStation with NTSD, the WinStation would
    hang after a logoff or WinStation reset.
    [From Hotfix SE165036]

15. On an aborted logoff attempt, the WFSHELL and NDDEAGNT
    processes are often killed.  Now these processes are only
    killed if the logoff is not aborted; that is, if the user
    really does log off.
    [From Hotfix SE165036]

16. The name of the NetWare server used for password
    synchronization is now saved to the SAM database (see item #5
    above).  Because it is not possible for a domain user's
    password to be modified when the PDC is down, one of the
    error messages relating to NetWare password synchronization
    has been changed to:

    "The default domain administrator is not configured correctly
    or the PDC is offline.  Notify your system administrator.  Now
    attempting to logon user <username> on domain <domain>."

    This message is typically displayed when the administrator
    account's ID or password is configured incorrectly within the
    NetWare Logon Configuration section of User Manager.  With
    this hotfix, this message will also be displayed when the PDC
    is unavailable.
    [From Hotfix SE165036]

17. Internet Explorer 3.02 would cause a Dr. Watson trap while
    running a Java applet that tried to access a Registry path
    longer than 260 characters.  (This Dr. Watson trap could
    actually be caused by any application that accessed a Registry
    path longer than 260 characters.)
    [From Hotfix SE165042]

18. User Manager refused to accept server names that exceeded 15
    characters in length for the home directory.  This appears in
    User Properties when the Profile button is clicked.  This
    hotfix includes the LONGNAME.EXE command-line utility that
    toggles a Registry value that enables User Manager to accept
    long server names.
    [From Hotfix SE165045]

19. Adds CLIENTNAME environment variable to logon environment.
    [From Hotfix SE165052]

20. The GetWindowsDirectory() function would not correctly handle
    the error condition when the specified buffer size was not
    large enough to hold the terminating NULL character.  This
    problem caused failures with some third-party setup programs
    incorrectly using the GetWindowsDirectory() function.
    [From Hotfix SE165033]

21. This allows .INI files to contain lines longer than 512
    characters.
    [From Hotfix SE165041]

22. Borland C++ Builder would not successfully install.  This
    hotfix will prevent the Program Manager from deleting a
    user's temporary directory when regenerating a user's
    environment unless the path to the temporary directory is
    changed.  Temporary directories are deleted when the
    DeleteTempDirsOnExit flag in the Registry is enabled and
    a user logs off or changes the temporary directory.
    [From Hotfix SE165055]

23. Fixes memory leaks and closes a Registry key previously
    left open when the application compatibility flag for
    limiting the amount of physical memory reported was set
    for a given application.
    [From Hotfix SE165060]

24. Fixes a case where the WinStation handle was left open if
    the QueryWinStationInformation call failed for some reason.
    This could occur when the application compatibility flag
    for returning the user name instead of the computer name
    was set for a given application.
    [From Hotfix SE165060]

25. %username% in the WinFrame Profile Path was not resolved
    properly when copying an old user to a new user.  It would
    use the old user's name.  %username% is now resolved as soon
    as the profile dialog box is closed (same as the NT profile 
    path).
    [From Hotfix SE165064]

26. The "show processes" NTSD command ("|") displayed "CLIB.DBG"
    instead of the executable module name.
    [From Hotfix SE165065]

27. The new NTSD debugger can now attach to processes executing in
    different WinStations.  Once installed, the NTSD debugger
    requires a Registry flag to be set to enable cross-WinStation
    debugging.  This Registry flag is located under the key:

    \\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Citrix

    The value is CrossWinStationDebug.  When this value is set to
    the type REG_DWORD and value 1, NTSD can attach and debug
    processes belonging to different WinStations.  This flag takes
    effect when a WinStation is reset or the system is rebooted.
    This flag is global and applies to all WinStations including
    the Console.

    For NTSD to attach to different WinStations the -c
    {WinStation #} parameter must be specified.  The -c
    {WinStation #} by default will attach to the WinStation's CSR
    process.  Otherwise, the -p option should be used to specify
    a different process.
    [From Hotfix SE165067]

28. Fixes a potential trap in MSGINA.DLL.
    [From Hotfix SE165069]

29. Files to be deleted or renamed during the next reboot of the
    system were not being renamed or deleted.  Many software
    installation programs use the MoveFileEx() function
    MOVEFILE_DELAY_UNTIL_REBOOT to replace files that are currently
    in use with the next reboot of the server.  The list of files
    that will be renamed with the next reboot of the system are
    stored in the Registry key:

    HKEY_LOCAL_MACHINE\SYSTEM
      \CurrentControlSet
       \Control
        \Session Manager
         \FileRenameOperations

    Once the FileRenameOperation is carried out, the values in
    this Registry key are removed.

    After Service Pack 5 is installed the MoveFileEx() API appears
    to work, returns the correct error code, and the Registry
    values are created.  However, on restart the files still exist
    and the Registry values are not deleted.

    For example when a hotfix is installed, HOTFIX.EXE renames
    active files to HF*.TMP.  HOTFIX.EXE then calls MoveFileEx()
    so that each of the HF*.TMP files are deleted upon reboot.
    After Service Pack 5 was installed, the HF*.TMP files were
    not deleted.  When this hotfix is installed and the server
    is rebooted, the HF*.TMP will be deleted.
    [From Hotfix SE165073]

30. This hotfix addresses a problem seen in some applications when
    the application attempted to open the clipboard.  The open
    clipboard would fail due to contention with another
    application.  This problem was reproduced using PeopleSoft
    (Microsoft Excel 7.0) but could be seen with other
    applications.

    With this hotfix it is now possible to configure the server
    in such a way that if an open clipboard command fails, the
    system will retry the open clipboard a specified number of
    times or until the open is successful.  It is also possible
    to configure a delay in milliseconds between each clipboard
    open retry.  The following procedure describes how to enable
    this feature for a given application:

    A. Create the registry key:

       HKEY_LOCAL_MACHINE\Software
        \Citrix
         \Compatibility
          \Applications
           \{app name}

       where {app name} is the name of the application without
       the extension.

    B. Add the following Registry values to the above Registry
       key:

       OpenClipboardRetries: REG_DWORD: 0x20
       OpenClipboardDelayInMilliSecs: REG_DWORD: 0x50
       Flags: REG_DWORD: {num}

       where {num} is the application type.  Possible values
       are:

       DOS application               0x1
       OS/2 application              0x2
       Windows 16-bit application    0x4
       Windows 32-bit application    0x8
       Win16 and Win32 applications  0xC
       Any version                   0xF

    C. When testing PeopleSoft in-house, the above settings
       worked well for Excel (32 retries with an 80 millisecond
       delay between each).  If applications on the WinFrame
       client and the WinFrame server are actively accessing
       the clipboard simultaneously, it may be necessary to
       increase the settings for "OpenClipboardRetries" and
       "OpenClipboardDelayInMilliSecs".

    D. The application must be restarted in order for the new
       settings to take have an effect.
    [From Hotfix SE165075]

31. This hotfix removes all values from the Registry key:

    HKEY_LOCAL_MACHINE\SYSTEM
     \CurrentControlSet
      \Control
       \Session Manager
        \FileRenameOperations

    except those values that pertain to files that have been
    replaced by hotfixes (HF*.TMP).

    Because of the problem described in item #29 above, a given
    server could potentially have many pending
    FileRenameOperations to carry out upon the next reboot.  If
    the server were allowed to carry out these old
    FileRenameOperations, it's possible that the operation would
    have an undesirable effect.

    For example, suppose the latest version of a given .DLL was
    currently installed on the WinFrame server.  Suppose further
    that there was a FileRenameOperations entry to replace the
    latest version of the .DLL with an older version.  When this
    hotfix was installed, the problem described in item #29 would
    be fixed.  With the next reboot of the WinFrame server, the
    latest DLL would be replaced by the older version.  This
    scenario could cause an application that required the latest
    version of the DLL to behave erratically.

    Because the fix for item #29 could cause this undesired
    behavior, this hotfix, by default, will remove any Registry
    values from FileRenameOperations that do not pertain to
    hotfixes.  The Registry values removed by this hotfix will
    be logged to the file HFX_RLOG.TXT, which will be created in
    the current directory.  If this file already exists in the
    current directory, it will be overwritten.

    The behavior described above is enabled by setting the
    value:

    FixRenameReg=1

    in the HOTFIX.INI.  This hotfix ships with this value set.
    To disable this behavior, add a semicolon to the beginning
    of this line in HOTFIX.INI.
    [From Hotfix SE165075]

32. This fixes a problem for clients connecting via NASI
    WinStations.  When a large amount of data was sent to the
    client (for example, file downloads), the client would
    intermittently lock up.
    [From Hotfix SE165076]

33. WinStations sometimes hung during a login or logout operation.
    [From Hotfix SE165081]

34. This hotfix solves the following hung WinStation problems:

    A. Applications would generate an exception due to a
       CSRSS.EXE thread trapping.  This would cause the
       WinStation to hang.

    B. WinStations would occasionally hang because they could
       not load the WinStation driver.
    [From Hotfix SE165081]

35. This hotfix solves the following hung WinStation problems:

    A. IPX WinStations hang during logon/logoff.  The PdWd was
       held while waiting for I/O to complete.

    B. WinStation hangs caused by an uninitialized variable in
       the thinwire video driver.

    C. CSR would trap during logon/logoff.  The PdWd critical
       section was waiting on an event.  The Wd module was
       changed to increment its reference count prior to giving
       up the critical section to prevent the module from being
       unloaded.
    [From Hotfix SE165082]

36. Applications could cause arbitrary lines to be drawn across
    the WinStation client screen.  This was caused by applications
    that draw to window coordinates less than negative 32K.  This
    problem was reproduced with the CAD application Microstation
    95 Version 05.05.01.65 Windows x86.
    [From Hotfix SE165082]

37. Applications utilizing Windows timers would not update
    correctly.  Symptoms included (but were not limited to):

    A. CLOCK.EXE would not update the time displayed.

    B. Performance Monitor (PERFMON.EXE) would not update its
       display.

    C. You could not scroll continuously by holding the mouse
       button down on the scroll bar or scroll arrow.
    [From Hotfix SE165082]

38. Account operators were not able to update WinFrame user
    configuration parameters within the User Manager for Domains
    utility.
    [From Hotfix SE165085]

39. A WinStation would hang after a disconnect or a logoff.
    [From Hotfix SE165086]

40. A WinStation would generate an access violation during logon.
    [From Hotfix SE165086]

41. IPX clients could not connect to the server.
    [From Hotfix SE165088]

42. When running a Microsoft Power Point slideshow with wipe left or
    wipe right slide transition, stripes appear corrupting the slide.
    [From Hotfix SE165092]

43. WinFrame was unable to logon more than 101 concurrent users
    using mandatory user profiles.  When a user logs on using a
    mandatory user profile, the mandatory profile (*.MAN file) is
    copied to %SystemRoot%\system32\config\TMP???.TMP, where "???"
    is incremented as each user logs on.  As each user logs off,
    the TMP???.TMP is deleted.  Prior to this hotfix the TMP*.TMP
    files could only be incremented up to the 101st concurrent user.
    The 102nd user would receive a message stating the user could
    not be logged on. With this hotfix the mandatory profiles are
    copied using the naming convention TMP????.TMP.  The new naming
    convention theoretically supports up to 10000 concurrent users
    utilizing mandatory user profiles.
    [From Hotfix SE165096]


Installation Instructions for Hotfix SE165096
---------------------------------------------
1. Copy SE165096.EXE to an empty directory on your hard disk and
   execute the command:

   SE165096

2. Execute the following command to install the hotfix on your
   system:

   HOTFIX /I

3. Shut down and restart your computer.


CNVRTUC Usage
-------------
This utility is used to convert user configurations from the
non-replicated Registry-based user configuration entries to the
replicated SAM database.  All users or a single user may be
converted and a different domain may be specified.  To convert
all users in a particular domain, type CNVRTUC /ALL /DOMAIN d,
where "d" is the domain.

To convert a single user, type CNVRTUC /USER u /DOMAIN d, where
"u" is the username to convert and "d" is the name of the
user's domain.

This utility should be run on a WinFrame server that is a member
of the domain requiring conversion.  You must be logged on as a
domain administrator when the utility is run.


LONGNAME Usage
--------------
This utility is used to toggle whether to accept long server
names in User Manager for a user's home directory.  To enable
long server names, type LONGNAME /ENABLE.

To disable long server names, type LONGNAME /DISABLE.

To query whether long server names are currently enabled or
disabled, type LONGNAME /Q.


Files Updated
-------------
advapi32 dll            205,088 06/20/97  10:10a 
basesrv  dll             38,064 06/20/97  10:10a 
cnvrtuc  exe             23,584 06/16/97  11:31a 
csrsrv   dll             31,232 08/18/97  12:27p 
csrss    exe              4,912 08/18/97  12:27p 
cxstatus dll              8,992 06/16/97  11:23a 
hotfix   exe             56,608 09/10/97  02:21p 
kernel32 dll            364,000 08/20/97  05:04p 
longname exe             27,856 06/16/97  11:31a 
msgina   dll            119,936 07/02/97  12:56p 
nasicall dll              4,992 09/02/97  05:20a 
nddeagnt exe             13,664 06/16/97  11:19a 
ntsd     exe            162,016 08/13/97  04:05p 
pdcomp   dll             10,192 09/02/97  05:18a 
pdcrypt1 dll              7,632 09/02/97  05:18a 
pdframe  dll              8,096 09/02/97  05:18a 
pdmodem  dll             10,704 09/02/97  05:18a 
pdreli   dll              8,640 10/08/97  03:00p 
pdrframe dll              6,976 09/02/97  05:18a 
regapi   dll             33,680 09/10/97  04:01p 
shell32  dll             67,888 06/16/97  11:17a 
smss     exe             65,824 07/09/97  07:08p 
tdasync  dll              9,024 09/02/97  05:19a 
tdipx    dll             12,272 09/02/97  05:19a 
tdnasi   dll             12,256 09/02/97  05:19a 
tdnetb   dll             10,176 09/02/97  05:19a 
tdspx    dll             10,688 09/02/97  05:19a 
tdtcp    dll             11,728 09/02/97  05:19a 
user32   dll            223,600 07/23/97  04:46p 
usrmgr   exe            292,288 06/16/97  11:21a 
vdtw30   dll             71,296 11/05/97  06:21p 
wdcon    dll              5,040 09/02/97  05:21a 
wdibm    dll             16,528 09/02/97  05:21a 
wdica    dll             20,928 09/16/97  07:51p 
wdteco   dll             18,032 09/02/97  05:21a 
wdvt420  dll             16,032 09/02/97  05:21a 
wfapi    dll              5,936 11/18/97  04:42p 
wfshell  exe             18,128 06/16/97  11:31a 
winlogon exe            194,224 11/18/97  10:57a 
winrdu   exe             21,600 07/09/97  10:32a 
winsrv   dll          1,424,432 09/16/97  07:40p 
winsta   dll             26,992 06/20/97  10:07a 
wowexec  exe             10,896 05/14/97  04:03p 
