Introduction to Application Building with Zen for Desktops 3 by xumiaomaio


									      Application Building with Zen for Desktops 4.0.1

                     Answer Key to Questions

Course prepared by
Microcomputer Systems, Information Technology Division
North Carolina State University
November, 2004
Questions: Windows Basics
  1. What kind of information is stored in HKEY_CLASSES_ROOT?
     File type associations, COM object configuration data

  2. Which registry hive contains the user’s profile?
     HKU\SID of current user
     Bonus: include also HKU\SID of current user_classes

  3. Suppose HKLM\Software\Classes specifies that .DOC files are to be
     opened with Microsoft Word, but a particular user’s profile specifies that
     .DOC files are to be opened with Corel WordPerfect. What will happen
     when that user tries to open a .DOC file?
     Provided WordPerfect is installed, the file will open with

  4. Under which registry hive would a workstation’s network configuration
     be stored?
     HKLM, particularly, HKLM\System

  5. How does REGEDIT differ under Windows 2000 and Windows XP?
     REGEDIT under XP combines the functionality of REGEDT32 and
     REGEDIT. New feature is Favorites, allowing you to bookmark registry

  6. What would happen if you set permissions on HKLM\SYSTEM such that
     the System user did not have Full Control permissions? (Note, this is not
     a challenge! Just a thought exercise.)
     Potential system problems could result if the System user had read-
     only access to HKLM\System; if I’m running with system-level
     privilege, caution is indicated..
     Bonus: How could you do this? Answer: running Regedit as Unsecure
     System User.

  7. Use REGEDIT to look at the value for Path under
     HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment.
     What is Path’s data type? Why do you think it is not of type
     The multiple values for PATH include system environment variables,
     such as %SystemRoot%, that must be expanded when the PATH value
     is accessed, therefore it must be of type REG_EXPAND_SZ.

Questions: ZenWorks Application Launcher

  8. When you launch an application from the ZenWorks Application
     Launcher, its default colors are messed up – the text is dark grey on
     black, and some of the menu items are greyed out. It worked fine
     yesterday. What’s the first thing you should try?

     Right-click and choose Verify to re-distribute the application.

  9. Suppose there is a user who does not have write rights to the
     C:\WINDOWS directory. That user tries to verify an application from the
     Application Launcher. The application needs to install a file into
     C:\WINDOWS, but when it tries, it fails. What could be wrong?

     The Application Launcher service handles distributing files. It may not
     be started or installed.
     Bonus: nalntsrv /install /start may fix this. Regular users may not have
     rights to do this (ITD has granted regular users rights to run this in
     the Unity environment)

  10. Which Application Launcher file reads eDirectory to build a list of the
      folders and applications that have been associated with the user?

     Bonus: applications associated with workstations are read by the
     Workstation helper, zenappws.dll

  11. I’ve created a new application object and associated it with my
      workstations. When can I expect my users to notice it?

     At Application Launcher startup, manual Application Window refresh,
     or after the auto-refresh interval has elapsed.

  12. Can a workstation be simultaneously authenticated to multiple
      eDirectory trees?

     No, but a user can.
Questions: Application Building Basics

  13. A user right-clicks on an application icon in the Application Launcher and
      selects Properties. The user wants to know what the application does
      and who to contact for help. No information is available. What should be
      done to the application object to provide the user with this information?

     Description field should be filled out describing what the app does.
     Contacts field should be filled out with the user(s) that be contacted

   for help, usually a user object that has the Help Desk’s phone,
   location and email address.

14. Consider the application object you built in the last exercise. For each
    operating system, could your application work? Why or why not?

   Windows 3.1 - No, must be Win98 or later
   Windows 98 - Yes
   Windows 2000 – No, path to NOTEPAD is wrong, unless the Windows
   2000 install was an upgrade to Win98 or was otherwise installed into
   Windows XP - Yes

15. You’ve created an application object, and the Availability Tab shows the

   Show           Type            Subject        Operator        Value
   False          OS Version      Windows        Greater than
                                  NT/2000/XP     or equal to
   False          Disk Size       C              Greater than    250
                                                 or equal to
   True           System          RAM            Greater than    128
                  Memory                         or equal to

   Will the app object show up in the Application Window of a Windows
   2000 workstation with 1 GB free space on C:, and 64 MB of RAM?

   Yes, but it will be grayed out in the Application Window, and the user
   will get a warning message explaining that the system requirements
   were not met.

16. You’ve created another application object, and the Availability Tab
    shows the following:

   Show           Type           Subject         Operator          Value
   False          Disk Size      C               Greater than      250
                                                 or equal to
   True           System         RAM             Greater than      128
                  Memory                         or equal to

What kinds of workstations will be able to see this application?

   None, OS Version is not set

   Bonus: If it had been set, what workstations could see this app?
   Any workstation whose OS Version matched, that also had a C: drive
   with at least 250 MB free space. If they didn’t have enough RAM, they
   could still see the app but it would be greyed out.

17. How could you create an application object that only showed up on
   Windows XP workstations?

   Set a version for the OS Version (5.1 for XP).

   Bonus: What about for *only* Windows 2000 workstations?
   Set the OS Version to be equal to 5.0

Questions: Macros

  18. From your application object in the previous exercise, what macro could
      you use in the “Path to Executable”?


  19. Where else could you have used a macro in your Readme application
     Path to the desktop:
     %*DESKTOP% or %USERPROFILE%\Desktop

  20. What is the difference between %*WINSYSDIR% and %SystemRoot%?
  %*WINSYSDIR% is a Novell “Special Windows Macro”, which works on any
  supported operating system. (Note the %* at the beginning of the
  variable name.)
  %SystemRoot% is a Microsoft Windows environment variable. (Note the %
  but no * at the beginning of the variable name.)
  In addition, %*WINSYSDIR% points to the System32 directory (i.e.
  C:\WINDOWS\SYSTEM32), while %SYSTEMROOT% points to the Windows
  directory (i.e. C:\WINDOWS). They sound similar, but are not the same.
  Bonus: The Special Windows Macro that points to the Windows directory
  is %*WINDIR%.

Questions: Application Assignment & Rights Considerations

21. You have created an application object for Mozilla, and you’ve
    associated it with all of the workstations in your OU. You are storing
    your source files on a server in the SHARE directory, to which all of your
    users have read-only access.

   Your Mozilla app shows up in the Application Window; however, when
   users try to run it, they get an error message that says “the application
   was unable to configure the application for the workstation” because it
   could not copy a file. Why might this be?

   The workstation may not have Read rights to the source files on the
   SHARE directory (you assigned rights to users). Workstation-
   associated apps distribute using the network credentials of the
   workstation, not the user.

22. You discover that Netscape needs full access (RWED) to a file in the
    Windows directory: C:\WINDOWS\NSREG.DAT – while the application is
    running. You do not want to make all of your users Administrators just to
    deal with this one crazy application. What could you do?

   You could set the workstation to run as Unsecure System, so that it
   would have the privileges of the Windows System user.

23. If you implement your solution, and Netscape is configured to store the
    user’s bookmarks and other settings in their network home directory,
    what will happen and why? What can you do about it?

   It will probably fail because applications running as secure/unsecure
   system user are running with the rights of the workstation, not the
   user. It would be better to use a helper application that runs XCACLS
   from the Windows 2000 or XP resource kit. Configure it to run as
   secure system user to set the permissions on that file.

   Bonus: How could the Unsecure System user solution succeed? You
   would have to grant the workstation Write rights to all potential
   users’ home directories and be sure to reference the home directory
   using UNC paths.
   Bonus bonus: Could you reference the home directory without using a
   user-specific variable? Drive letters won’t work, since the
   workstation doesn’t have access to mapped drives. %CN% will return
   the common name of the workstation, not the user. This answer will
   vary by environment, but it is generally No.

  24. You've configured an application to force-run on your workstations. Six
      months pass. What are the odds that you'll remember to remove it
      before it breaks something? :-) Real World Tip @ NC State: Set a next
      contact date in Remedy.

     The odds are low. Problems become more likely as time passes and
     new hardware is introduced, especially when force-running
     applications on containers. A system for managing force-run
     applications is needed, whether through use of calendar programs,
     cron jobs to send email reminders, regularly scheduled application
     association reviews, call tracking systems, etc.

Questions: Folders

  25. You have created ten application objects, and on each one you have
      configured a different Custom Folder. You now want nine of these
      application objects to show up in a different folder. What must you do
      to accomplish this?

     You must locate each of those 9 application objects and change the
     Custom Folder, making sure to use the correct spelling on each.

  26. You've created 50 application objects and linked them to a single
      application folder object, with a structure that reflects what your users
      expect to see. Someone deletes your folder object. How many bad words
      will you say? What are some best practices you can implement to recover

     The number of bad words will be approximately proportional to the
     number of subfolders and application objects involved. 

     eDirectory does not allow for single-object restores, so some best
     practices include: using a logical system or naming convention for
     your application objects that will enable you to identify the folders
     they might belong to; writing down the folder structure; organizing
     application objects in OUs that reflect the folder structure.

Questions: Application Dependencies

  27. In the exercise you just completed, you had to close Notepad to get
     Calc to launch. What would you need to do to cause Calc to open
     without closing Notepad first?

     Configure the application dependency by checking the “Continue
     Distributions Immediately” box.

  28. Suppose you had three applications, each of which required a reboot
     after distribution. You want to create an application dependency chain
     using these three applications, but you only want one reboot. Could you
     do this? How?

     Yes. It is not necessary to change the reboot options on each
     application object. Instead, check the “Reboot Wait” box beside each
     application in the application dependency list.

Questions: Launch/Termination & Distribution Scripts

  29. You would like for an application object to open the application’s
      ReadMe file, using Notepad, before the application starts. Would you use
      a launch, termination, or distribution script to accomplish this?

     Launch scripts run before the application starts each time.

  30. In your Novell login script, you use the syntax WRITE Hello
      %LOGIN_NAME to greet the user. Can you do this in an application
      object launch script as well?

     No, because this would display to the screen. Not all Novell login
     scripts commands are available.
     Bonus: Workaround would be to use a program like BOX.EXE from
     CoolSolutions to display the greeting from a Launch script. For
     @L:\itd\tools\BOX.EXE 0;Greetings;Hello %username%

  31. You want to use the default Novell scripting engine to call an external
      application. You don't want the script to continue until that application
      has completed its work. What should you preface the command with?

     Use the # symbol.

  32. In the exercise above, you changed permissions on a file in the TEMP
      directory using a batch file from a Launch script. Would this work if you
      needed to give users additional permissions to a file in the Windows
      directory? Why or why not?

     No, because scripts running from the Launch script run with the
     permissions of the user.

  33. Would the script used above work if the application were associated to
      workstations? Why or why not?

     Yes, because Launch scripts run with the permissions of the user, not
     the workstation, so drive letters are not a problem.

Questions: Environment Variables

34. You want to set a custom environment variable on your workstation,
    OU=ZenLab. You need for this environment variable to be read by the login
    script each time the user logs in.

    Should you set this environment variable in the control panel, or configure
    an application object’s Environment Variables setting to set the OU?

    The environment variable should be set using the control panel (or the
    registry), but not through an application object because the
    environment variable needs to be persistent (available after the
    application object has quit), it needs to be available to other programs
    (in this case, the login script), and it needs to be available before the
    Application Launcher has started. Any of those reasons are sufficient for
    using the control panel instead of the application object.

35. You built an application object using snAppShot on a Windows 2000
    workstation. The system path variable was modified and this was captured
    in the registry settings under HKLM\SYSTEM\CurrentControlSet\Control\Session
    Manager\Environment. What will happen if when a user running a Windows XP
    workstation runs your application object?

    Because the PATH variable is of type REG_EXPAND_SZ (remember exercise
    1), it is possible that the path will work because variables such as
    %SystemRoot% are stored unexpanded.

    However, it is a bad practice to overwrite the PATH variable with a
    snapshotted path, because the user’s workstation may not have the same
    software installed and therefore the system path may be different.
    Bonus: Pathman.exe from the Windows 2K/XP Resource Kit can be used to
    add or remove entries from the System or User paths.

Questions: SnAppShot

36. Why is it important to start with a “clean” installation when running
    SnAppShot? What is a clean installation?

   It is important to start with a “clean” installation because you don’t
   want to capture unnecessary changes in your snapshot from running
   background applications. Also, if the workstation you are doing the
   snapshot on already has common DLLs, files or configuration settings
   installed that your application would otherwise add (or remove), these
   changes will not be captured.
   The workstation you are using represents your assumption about the
   minimum set of software that all other workstations that will use this
   snapshot have. A clean installation should have the Windows operating
   system, the Novell NetWare client, and an antivirus package. (Remove
   any antivirus-related changes from the final application.)
   If you are building a plug-in for another application (i.e., a helper app for
   Office), it is reasonable to install that application first. In this case, you
   would make the helper application have a dependency on Office, using
   Application Dependencies.

37. What is the difference between an AOT and an AXT file?

   An AOT file is in binary format, whereas an AXT file is in text format and
   can be modified easily in Notepad.

38. Suppose you make a snAppShot of an application under Windows XP SP2.
    What concerns might you have about distributing it to a Windows XP SP1
    workstation? A Windows 2000 workstation?

   (There are many right answers here.)
   The XP SP1 workstation may not have all of the Windows DLLs, or the
   right versions, for the application that was snapshotted under XP SP2.

   The 2K workstation might need different files/versions, or may be
   missing DLLs or other files that are present by default under XP SP2. In
   addition, some variables or configuration data may be different,
   especially things that include system paths (C:\WINNT vs. C:\WINDOWS).

39.    You have created a complicated application object, and you’ve cleaned
up all the garbage that was captured by SnAppShot using ConsoleOne. How
could you make a backup of this cleaner version of your application object?
       Select the application object in ConsoleOne, and use

Question: Standard Application Building

  40. You have created an application object from an AXT, and you have
      distributed it to your users. You begin to get complaints from your users
      that the sound no longer works on their PCs after they run the
      application. What might be wrong?

     You may have accidentally captured sound-related registry settings or
     files in your snapshot.
     Bonus: Where to look?
     HKLM\System in the registry, Windows directory in the file system

  41. How can you tell whether a particular registry setting is necessary?
      Some possible answers include:
              Baseline – Run snAppShot without installing any software to see
      what Windows does on its own; these settings probably should not be
      left in the application object
              Research – check the Windows Registry Reference and any
      documentation from the software vendor
              Reason – plausibility test, does this setting makes sense? Should
      my application need to set <particular setting or key>?
              Experimentation – make a copy of the application object,
      delete the suspect setting, test to see if the application works right

     Bonus: Tools – Use SysInternals RegMon to see what registry keys the
     application access while starting up, running, and shutting down.
     Filter on the application’s name (see RegMon documentation). Keys
     that are not in the resulting file may be spurious.
     Use AXTClean from Zenworks Cool Solutions to remove known
     “extra” registry keys (use with caution).

  42. Why do you think the “Reinstall file if missing or not exact version” is
      not a default setting for an MSI verify?

     The “exact version” setting can present problems if service packs or
     other software packages update the versions of shared files. Each
     time the MSI package was verified, updated files would be back-rev’d,
     potentially breaking other software packages, including Windows.

  43. What are the advantages of using the Zenworks MSI functionality?

     Zenworks “verify” functionality is available to the end user. Other
     functions of the Application Launcher are available as well, including
     the ability to add or modify registry settings and INI files, scripting,
     unsecure/secure system user, fault tolerance, etc.

Questions: Testing Considerations

  44. Why is it important to test on multiple workstations, with multiple

     It is not a test to try an application distribution out on the same
     workstations it was built on. Some problems only show up with
     certain hardware combinations. Multiple user account should be used
     to ensure that characteristics of one account (such as the profile or
     drive mappings) are not responsible for the success or failure of an
     application distribution.

  45. What would invalidate a test?

     (Many correct answers)
     Generally, testing under conditions that do not match the end user’s
     working conditions (workstations, account privileges, policies,

     Trying an application distribution out with an Administrator account
     when the end user who will be running the application is a Regular

     Installing additional software before the test is completed.

  46. When would you develop a formal test plan?

     (Many correct answers)
     Mission-critical applications
     May develop formal test plans for core criteria, and less formal
     methods for testing additional functionality


To top