# RemoteCallable

Import: `import com.install4j.api.context.RemoteCallable;`

```java
interface RemoteCallable extends Serializable
```

On macOS and Windows Vista and higher, the 'require admin user' action can spawn additional installation processes that have full admin rights.
If you have selected to elevate the main installation process, you can implement this interface and pass it to
[`Context.runUnelevated`](Context.md#rununelevated-remotecallable) to run code in the context of the original user account.
Otherwise [`Context.runElevated`](Context.md#runelevated-remotecallable-boolean) can be used to execute something with full admin rights.
All implementations must be fully serializable.


**See also:**

- [Context.runUnelevated](Context.md#rununelevated-remotecallable)
- [Context.runElevated](Context.md#runelevated-remotecallable-boolean)

## Methods

| Signature | Returns | Description |
|---|---|---|
| [`execute()`](#execute) | `Serializable` | The method that will be executed within the requested account. |

### execute()

```java
Serializable execute()
```

The method that will be executed within the requested account.


**Returns:** You can return any serializable object that will be passed back by [`Context.runUnelevated`](Context.md#rununelevated-remotecallable) or [`Context.runElevated`](Context.md#runelevated-remotecallable-boolean)

