What is the "Use the operating system shell to start the process" checkbox

  • 7011448
  • 04-Dec-2012
  • 18-Dec-2012

Environment

Novell ZENworks Configuration Management

Situation

The impact of selecting or deselecting the "Use the Operating Shell to Start the Process" checkbox in the launch options of a bundle is not clear.

Resolution

ZCM uses the "Process.Start"  method to launch processes.
 
When "Use the Operating Shell to Start the Process" is checked, the Flag for "ShellExecute" is set to True.
When "Use the Operating Shell to Start the Process" is unchecked, the Flag for "ShellExecute" is set to False.
 
When "ShellExecute" is set to False, "Process.Start" will issue a "CreateProcess" command to launch the process.

For this to succeed, the process to be launched must be an Executable type of file such as an .EXE or.COM file. It cannot require another program to load it such as a .VBS (wscript.exe) or a .BAT file (cmd.exe) file.
(Note: Neither of these limitations apply to ZCM, since if the value is false, ZCM will programatically determine the association and search the path outside of the "Process.Start" call.)
 
When "ShellExecute" is set to True, "Process.Start" will query windows will attempt to determine the best way to launch the specified file.

This involves examining file association settings, searching the Windows path, and processing Shellhooks.
 
The default value used by ZCM is "True".

If the launched bundle needs to bypass certain GPO restrictions, set the value to false. (See TID#7009039)
For the vast majority of applications, they behave identically when launched using either "True" or "False", but if any given application behaves oddly with one value then attempt the other.
(Note: Shell/Command-line programs such as CMD.exe will often not work when"Use the Operating Shell to Start the Process" is deselected.  See below on how to allow them to work with this setting.)
This is one of the reasons that ZCM allows the administrator to control this value on a per-bundle action level.
 

Additional Information

To launch command-line program such as CMD.exe, configure the bundle to launch a simple VBS script executed using  WSCRIPT.exe with the name of the script specified under "command line parameters".
Below is an example of such a script that executes two different commands as examples.
 
Set objShell = CreateObject("Wscript.Shell")
objShell.Run("cmd.exe")
objShell.Run("dosomething.bat")