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

# Windows Client

> Enroll and operate a Windows amd64 client with the v2.2.1 stable workflow.

# Windows Client

FRP Auto Deploy v2.2.1 includes a native Windows amd64 client path using the same server enrollment protocol and pinned FRP **0.71.0**.

## Support and validation

The Windows implementation targets **Windows 10 / 11 / Server 2019+ on amd64** with Windows PowerShell 5.1 or PowerShell 7+. The stable field-validation claim is narrower:

* **Windows 10 / PowerShell 5.1 — Real E2E validated**
* **PowerShell 7 — CI validated** unless the real test host actually has `pwsh` installed
* Windows ARM64 is not supported in v2.2.1

See [Supported Platforms](/reference/platforms) for the exact validation matrix.

## Enroll the Windows client

On the server, create a Zero-Touch enrollment and use the **Windows bootstrap command generated by the stable server**. Do not reconstruct a ticket or enrollment payload from documentation.

<Warning>
  Do **not** use `irm | iex`. The Windows bootstrap path is designed to download the PowerShell installer, verify its SHA-256 against the release checksums, and execute it with `-File`.
</Warning>

If you are running the tagged installer manually, the execution form is:

```powershell theme={null}
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\install-client.ps1 -ZeroTouch `
  -AllocatorUrl https://YOUR_PUBLIC_HOST/enroll `
  -CaSha256 <allocator-ca-DER-SHA256> `
  -BootstrapTicket 'bt1.<id>.<secret>'
```

Use values generated by your server; the Bootstrap Ticket is a short-lived secret.

## Runtime layout

The stable client stores its managed files below:

```text theme={null}
C:\ProgramData\frp-auto-deploy\
  bin\frpc.exe
  config\frpc.toml
  state\
  certs\allocator-ca.crt
  logs\
  tools\frp-client.cmd
```

## Verify and operate

In an elevated PowerShell window:

```powershell theme={null}
& "$env:ProgramData\frp-auto-deploy\tools\frp-client.cmd" status
& "$env:ProgramData\frp-auto-deploy\tools\frp-client.cmd" info
& "$env:ProgramData\frp-auto-deploy\tools\frp-client.cmd" doctor
```

Common lifecycle actions use the same wrapper:

```text theme={null}
start
stop
status
info
update
uninstall
doctor
```

## Reboot and autostart

v2.2.1 installs a product-owned Windows Scheduled Task named:

```text theme={null}
FRPAutoDeployClient
```

It runs as **SYSTEM** on a boot trigger and starts the managed FRP client without requiring an interactive login.

You can inspect it with:

```powershell theme={null}
schtasks.exe /Query /TN FRPAutoDeployClient
```

## RDP and other services

Windows can publish RDP (`3389`) or other reachable TCP services, including services on another LAN host.

<Warning>
  FRP Auto Deploy does not enable Remote Desktop, change Windows Firewall, create credentials, or configure NLA. A publicly mapped RDP service should be protected with appropriate external firewall/ACL policy and strong Windows authentication.
</Warning>

For v2.2.1, do not assume built-in per-service source-IP allowlists; see [Security Overview](/security/overview).

## Uninstall and release

```powershell theme={null}
& "$env:ProgramData\frp-auto-deploy\tools\frp-client.cmd" uninstall
```

Local uninstall preserves the server-side client record and public-port reservations. If the machine is permanently retired, release it separately from the server:

```bash theme={null}
sudo frpctl release client <CLIENT-ID>
```

See [Lifecycle Semantics](/operations/lifecycle) before revoking or releasing a client.
