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


