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

NOTE: You must install Service Pack 5 before applying this Hotfix.
NOTE: You MUST have WinCenter connect 3.0.39 in order for this Hotfix
      to be compatible with NIS.


Description
-----------

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

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

2.  This hotfix corrects the problem where WinStations disappear
    from WinStation Administration and cannot be reset.
    [From Hotfix WF160511]

3.  This hotfix corrects the problem where a WinStation would
    trap due to receiving a bad packet.
    [From Hotfix WF160511]

4.  This corrects the problem where installing Microsoft SNA
    server Version 3.0 would cause a Dr. Watson trap in Program
    Manager.
    [From Hotfix WF160514]

5.  This hotfix corrects the problem where 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.  This corrects the problem where 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.  This hotfix corrects the problem where NetWare password
    synchronization failed if the WinFrame server name (computer
    name) exceeded 13 characters.
    [From Hotfix WF160525]

8.  This corrects the problem where 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.  This corrects the problem where the PID 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. This corrects the problem where 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. On remote WinStations, some programs could not display text
    at the end of lines while scrolling horizontally.
    [From Hotfix WF160535]

12. 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]

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

14. 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]

15. 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]

16. 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 accesses a Registry
    path longer than 260 characters.)
    [From Hotfix SE165042]

17. 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]

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

19. This corrects the problem where 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]

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

21. 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]

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

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

24. Fixes the problem where %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]

25. Fixes the problem where the "show processes" NTSD command
    ("|") displayed "CLIB.DBG" instead of the executable module
    name.
    [From Hotfix SE165065]

26. The new NTSD debugger can 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]

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

28. Fixes the problem where 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]

29. 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 less 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 a 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]

30. 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 #28 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 #28 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 #28 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 semi-colon to the beginning
    of this line in HOTFIX.INI.
    [From Hotfix SE165075]

31. 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]

32. This hotfix for WinFrame 1.6 corrects a problem where
    WinStations may hang during a login or logout operation.
    [From Hotfix SE165081]

33. This hotfix addresses the following:
    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]

34. 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]

35. This hotfix for WinFrame 1.6 fixes a problem where
    applications can cause arbitrary lines to be drawn across
    the WinStation client screen.  This is 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]

36. This hotfix for WinFrame 1.6 fixes problems where 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]

37. This hotfix for WinFrame 1.6 corrects the problem where
    account administrators were not able to update WinFrame user
    configuration parameters within the User Manager for Domains
    utility.
    [From Hotfix SE165085]

38. This hotfix for WinFrame 1.6 fixes a problem where a WinStation
    would hang after a disconnect or a logoff.
    [From Hotfix SE165086]

39. This hotfix for WinFrame 1.6 fixes a problem where a WinStation
    would generate an access violation during logon.
    [From Hotfix SE165086]


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

   SE165086

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