NAL icons copied to desktop disappear after refresh

  • 3424309
  • 31-Oct-2007
  • 30-Apr-2012

Environment

Novell ZENworks 7 Desktop Management Support Pack 1 - ZDM7 SP1 Application Launcher (NAL)

Situation

NAL icons copied to desktop disappear after refresh

Steps to reproduce:
1. Open NAL Window
2. Copy NAL icon to desktop
3. Refresh the desktop screen and the NAL icons disappear

Resolution

NAL icons that are copied to the desktop disappear after refreshing desktop.
Icons disappearing from the desktop is caused by the desktop path value in the workstation registry (specifically the ShGetSpecialFOlderLocation() and SHGetPathFromIDList() calls), being changed to a lower case "c" as in"c:\Documents and Settings\user\Desktop". When the drive letter is changed to lower case it is stored as such in the registry in [HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\user sid]"ProfileImagePath"

The NAL shortcuts on the Desktop, FindFirstFile()/FindNextFile()returns the drive letter in upper case. When the path is validated by NAL, a case sensitive string compare occurs and since the Desktop path that comes from Windows has a lower case drive letter the compare fails. The icon location in the registry then causes the removal of the NAL shortcut from the desktop.

Solution:
When a machine is configured to autologin with a cached domain account. Only one of the (cached) domain user accounts has theProfileImagePath set to a path with a lower case driver letter. All other ProfileImagePaths, including the local accounts are using the SystemDrive environment variable. The SystemDrive environment variable itself is set to an upper case "C:". By manually changing the registry data to an upper case C or by using %SystemDrive%, NAL works correctly and the NAL icon does not get removed from the Desktop.

If the ProfileImagePath is changed from the default value, NAL will fail.

The solution for this issue is to not change the ProfileImagePath registry value, or if a change is required for some reason, change it to an upper case "C:".