> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XUser 的无头自动化

> XUser 的无头自动化

在测试中,游戏可能希望自动化将用户添加到其游戏中。在 Microsoft 游戏开发工具包(GDK)中,
只有当游戏调用 [XUserAddAsync](/reference/system/xuser/functions/xuseraddasync) 时才会添加用户。就
自动化而言,此函数有以下两个主要限制。

* 如果你使用 `AddDefaultUserSilently` 标志调用 `XUserAddAsync`,你不会看到 UI(这
  有助于自动化)。然而,你只能获得启动游戏的用户。
  使用此标志反复调用该 API 不会改变结果。你只会不断得到
  针对同一用户的新句柄。
* 如果你不使用 `AddDefaultUserSilently` 标志调用 `XUserAddAsync`,则会出现 UI
  并等待有人按下按钮。这会破坏自动化。

为了帮助在测试代码中自动添加用户,Microsoft 游戏开发工具包(GDK)支持启用一个
无头选项,允许你在不显示需要用户输入的 UI 的情况下添加用户。以下
步骤概述了基本方法。

1. 要将已登录的用户添加到主机,可以使用带有 `signin` 选项的 [xbuser(NDA 主题)](/tools/tools-console/commandlinetools/xbuser)
   命令行工具。为每个用户重复此步骤。
2. 要在游戏中添加用户时抑制通常会显示的 UI,你可以
   使用带有 `HeadlessXuser` 选项的 [xbconfig(NDA 主题)](/tools/tools-console/commandlinetools/xbconfig) 命令行工具,如下所示。

```
    xbconfig HeadlessXUser=true
```

3. 启动游戏。
4. 在游戏中时,每次不带 `AddDefaultUserSilently` 标志调用 `XUserAddAsync`
   都会返回已登录到主机、并且游戏尚未为其关联任何未关闭 `XUserHandle` 对象的第一个用户。
5. 如果游戏持续调用 `XUserAddAsync`,最终会耗尽已登录到主机的用户
   数量。发生这种情况后,`XUserAddAsync` 会
   返回 `E_ABORT`。这与如果用户取消登录到主机(或以其他方式退出
   UI)时 `XUserAddAsync` 会返回的错误完全相同。
6. 出于测试目的,游戏可能希望知道登录到主机的 [test accounts](/services/xbox-services/develop/test-accounts/live-setup-testaccounts) 数量。为便于此,游戏可以调用 `CreateProcess` 并使用 `list` 选项
   启动 `wduser` 命令行工具。


## Related topics

- [用户](/zh-CN/build/core-features/common/user/user-toc.md)
- [GDK 中的用户身份与 XUser API](/zh-CN/build/core-features/common/user/index.md)
- [游戏 AI 体验的无障碍性](/zh-CN/build/game-principles/accessibility/accessibility-of-gaming-ai.md)
- [XBOX Manager：管理主机自动化](/zh-CN/tools/tools-console/xbom/manager-tool-automation.md)
- [使用自定义标记自定义事件](/zh-CN/services/playfab/data-analytics/ingest-data/playstream-custom-tags.md)
