type=page
status=published
title=setup-local-dcom
next=setup-ssh.html
prev=set-log-levels.html
~~~~~~
setup-local-dcom
================

[[setup-local-dcom-1]][[GSRFM893]][[setup-local-dcom]]

setup-local-dcom
----------------

sets up DCOM on a host

[[sthref2066]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] setup-local-dcom [--help] 
[--verbose={false|true}]
--force={false|true}
----

[[sthref2067]]

Description

The `setup-local-dcom` subcommand sets up the Distributed Component
Object Model (DCOM) remote protocol on the host where the subcommand is
run. The DCOM remote protocol is available only on Windows systems.

This subcommand must be run by the operating-system-level administrator
user on the host where DCOM is being set up. Before running this
command, ensure that items in the Windows operating system are set as
described in "link:../ha-administration-guide/ssh-setup.html#GSHAG449[Windows Operating System Settings]" in
GlassFish Server Open Source Edition High Availability Administration
Guide.

Setting up DCOM on a host ensures that scripts can be run on the host
from a remote host. To run scripts on the host from a remote host, the
Windows user must be allowed full control over some Windows registry
keys.

In some versions of Windows, only the user `NT SERVICE\TrustedInstaller`
has full control over these Windows registry keys. If the version of
Windows on a host is configured in this way, this subcommand modifies
these keys to allow full control over them for the Windows user.


[CAUTION]
=======================================================================

This subcommand might modify the permissions of some keys in the Windows
registry. Before running this command, back up the Windows registry.

=======================================================================


By default, the subcommand prompts you to confirm that you want to
update the Windows registry. To run the subcommand without being
prompted, set the `--force` option to `true`.

This subcommand is supported in local mode only.

[[sthref2068]]

Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--verbose`::
`-v`::
  Specifies whether the subcommand displays information about the
  operations that are performed to set up DCOM on the host. +
  Possible values are as follows: +
  `false`;;
    No information about the operations that are performed to set up
    DCOM is displayed (default).
  `true`;;
    The subcommand displays information about the operations that are
    performed to set up DCOM on the host.
`--force`::
`-f`::
  Specifies whether the subcommand prompts you to confirm that you want
  to update the Windows registry. +
  Possible values are as follows: +
  `false`;;
    You are prompted to confirm that you want to update the Windows
    registry (default).
  `true`;;
    The subcommand forcibly updates the Windows registry without
    prompting you.

[[sthref2069]]

Examples

[[GSRFM737]][[sthref2070]]

Example 1   Setting Up DCOM on a Host

This example sets up DCOM on the host where the subcommand is run.

[source,oac_no_warn]
----
asadmin> setup-local-dcom
Caution: This command might modify the permissions of some keys in the Windows 
registry.
Before running this command, back up the Windows registry.
The modification allows the Windows user full control over these keys.
 
Are you sure that you want to edit the Windows registry? If so, type yes in full: yes
Command setup-local-dcom executed successfully.
----

[[GSRFM894]][[sthref2071]]

Example 2   Forcibly Setting Up DCOM on a Host

This example sets up DCOM without prompting for confirmation that the
user wants to update the Windows registry.

[source,oac_no_warn]
----
asadmin> setup-local-dcom --force=true
Command setup-local-dcom executed successfully.
----

[[sthref2072]]

Exit Status

0::
  command executed successfully
1::
  error in executing the command

[[sthref2073]]

See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

"link:../ha-administration-guide/ssh-setup.html#GSHAG449[Windows Operating System Settings]" in GlassFish Server
Open Source Edition High Availability Administration Guide


