# Application startup duration

{% hint style="warning" %}
This procedure should only be performed by a Nexthink Engineer or a Nexthink Certified Partner. If you need help or assistance, contact your Nexthink Certified Partner.

This document applies to the Microsoft Windows platform.
{% endhint %}

## Overview <a href="#applicationstartupduration-overview" id="applicationstartupduration-overview"></a>

*Application startup duration* is the time it takes for business-critical desktop applications to start. It is a key indicator of resource-related issues, offering early detection of performance bottlenecks before they escalate and impact employee productivity. This metric directly reflects the end-user experience while helping to identify a range of problems, from resource shortages to network disruptions.

## Measurement of the application startup duration <a href="#applicationstartupduration-measurementoftheapplicationstartupduration" id="applicationstartupduration-measurementoftheapplicationstartupduration"></a>

Application startup duration measures the time from when the kernel initiates a new application process to the moment the application's main window is displayed, as shown in the following diagram.

```mermaid
%%{init: { 'logLevel': 'debug', 'theme': 'default' } }%%
timeline
section Application startup duration
Start : Kernel launches application process
End : Main window shows up
```

### Using application startup duration in NQL queries <a href="#applicationstartupduration-inspectingapplicationstartupdurationthroughfinderandnxql" id="applicationstartupduration-inspectingapplicationstartupdurationthroughfinderandnxql"></a>

{% hint style="warning" %}
Desktop applications represent [binaries grouped](https://docs.nexthink.com/platform/references/database-information-and-organization/binary-grouping/) with their associated subprocesses. As a result, application-related metrics and AI insights include all subprocesses.

When querying application-related data:

* Use `binary` for application-level context: monitoring, attribution and reporting.
* Use `real_binary` to query the actual executable that ran.
  {% endhint %}

Application Startup Duration is a metric of the execution events and stored in the `startup_duration` field. The following example shows this in an NQL query.

```
execution.events
| where startup_duration != null
| where binary.name == "outlook.exe"
| summarize app_startup_duration_ = startup_duration.avg() by device.collector.uid
```

Running the query gives the following result:

<div align="left"><figure><img src="https://268444917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxJSUDk9NTtCHYPG5EWs3%2Fuploads%2Fgit-blob-d22c3eff02087052ad4c3af644ea36b18636111a%2FScreenshot%202025-02-27%20at%2016.57.54.png?alt=media" alt="Application startup duration NQL example" width="497"><figcaption></figcaption></figure></div>

## Requirements <a href="#applicationstartupduration-requirements" id="applicationstartupduration-requirements"></a>

### Application requirements

For Collector to report accurate application startup duration, an application must fulfill the following requirements:

* **Native title bar in main window:** To measure startup duration, applications must display a standard title bar in the main window to distinguish it from splash screens. Applications that display any window—console applications or applications that run minimized—are discarded from the measurement.
* **The application is not a Universal Windows Platform (UWP) app:** The measurement method does not work for UWP applications.
* **The application takes less than 3 minutes to start:** The startup duration is not reported for applications that take longer than 3 minutes to start, as this may indicate other issues, such as the application not responding.
* **The application uses one process for initializing and displaying the main window:** Collector may report inaccurate startup duration values for applications that spawn multiple processes for initialization, with just one process being responsible for displaying the main window.
* **The application must be a x64 binary:** Collector continues to report the execution of 32-bit applications. However, Application start time will only be available for 64-bit applications on 23.6 or later versions of the Collector.

### Executable on passlist

The application startup duration is not available for all applications out of the box. It is only available for applications that have their pertaining executable files in a particular *passlist*. By default, the passlist includes the following applications:

| Application type       | Application     | Executable name                                    |
| ---------------------- | --------------- | -------------------------------------------------- |
| Web browser            | Google Chrome   | chrome.exe                                         |
|                        | Firefox         | firefox.exe                                        |
|                        | Microsoft Edge  | msedge.exe                                         |
| Microsoft Office suite | Word            | winword.exe                                        |
|                        | Excel           | excel.exe                                          |
|                        | PowerPoint      | powerpnt.exe                                       |
|                        | Outlook         | <ul><li>outlook.exe</li><li>olk.exe</li></ul>      |
|                        | OneNote         | onenote.exe                                        |
| Adobe suite            | Adobe Acrobat   | <ul><li>acrobat.exe</li><li>acrord32.exe</li></ul> |
| Communications         | Microsoft Teams | <ul><li>ms-teams.exe</li><li>msteams.exe</li></ul> |
|                        | Zoom            | zoom.exe                                           |

See the allowlist configuration in the [next section](#applicationstartupduration-configuration).

## Configuration <a href="#applicationstartupduration-configuration" id="applicationstartupduration-configuration"></a>

There are two ways to activate and configure reporting Application Startup Duration:

* Using [MSI parameters](#applicationstartupduration-msiparameter) during installation
* Changing the [registry key](#applicationstartupduration-registrykey) directly

To add an application to the allowlist, first ensure that it satisfies the requirements and test the accuracy of the measurements before enabling the new allowlist in production. Always include the default list of executables in your own allowlist.

The allowlist format is a string consisting of a comma-separated list of executable names. The asterisk can be used as a wildcard to replace zero or more characters in the name of an executable, for instance:

```sh
"winword.exe,excel.exe,onenote*"
```

### MSI parameters <a href="#applicationstartupduration-msiparameter" id="applicationstartupduration-msiparameter"></a>

During installation, you can set the value of the `APP_STARTUP_DURATION` [MSI parameter](https://docs.nexthink.com/platform/configuring_nexthink/bringing-data-into-your-nexthink-instance/deploying-nexthink-in-non-vdi-environment/installing-collector/installing-collector-on-windows#installingcollectoronwindows-deployingcollectorusingactivedirectorygrouppolicy) to `enable` to activate the reporting of Application Startup Duration. The default value is `disable`.

The `APP_STARTUP_DURATION_ALLOWLIST` MSI parameter defines the list of applications for which application startup duration is measured.

### Registry key <a href="#applicationstartupduration-registrykey" id="applicationstartupduration-registrykey"></a>

To locally enable the reporting of application startup duration and modify the allowlist of a device, edit the following registry key:

`HKEY_LOCAL_MACHINE\SOFTWARE\Nexthink\Collector\AppStartupDuration`

Set `Disabled=0` key to activate reporting of application startup duration data.

Modify the `Allowlist` key to define the list of applications for which application startup duration is measured.

## Migrating to the APP\_STARTUP\_DURATION\_ALLOWLIST parameter

Nexthink has renamed the original allowlist parameter; the current parameter name is:

`APP_STARTUP_DURATION_ALLOWLIST`

When updating Collector, the installer automatically updates the allowlist parameter to its new name while preserving its values.

{% hint style="warning" %}

* Using both the old and new parameter names simultaneously will cause an error.
* If you have custom configuration scripts, update them to use the new parameter name.
  {% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nexthink.com/platform/references/database-information-and-organization/application-startup-duration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
