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

# Windows 11 多人遠端桌面 (RDP) 設定

> 突破 Windows 11 內建遠端桌面單一連線限制，以 RDP Wrapper 實現多人同時連線，涵蓋安裝驗證、NLA 與會話安全設定、路由器連接埠轉發、Cloudflare 對外存取與疑難排解。

export const OptionPicker = ({options = [], lang = "zh", label}) => {
  const t = lang === "en" ? {
    pick: label || "Pick an option to compare",
    rec: "Recommended"
  } : {
    pick: label || "點選項目比較",
    rec: "推薦"
  };
  const opts = Array.isArray(options) ? options : [];
  const [sel, setSel] = useState(0);
  if (opts.length === 0) return null;
  const idx = Math.min(sel, opts.length - 1);
  const cur = opts[idx];
  const css = `
  .op-root{--op-bg:#FAF8F3;--op-surface:rgba(0,0,0,0.025);--op-border:rgba(0,0,0,0.09);--op-text:#2b2722;--op-dim:#6f6a62;--op-faint:#8a8378;--op-accent:#bf7551;border:1px solid var(--op-border);border-radius:14px;background:var(--op-bg);color:var(--op-text);overflow:hidden;}
  .dark .op-root{--op-bg:#1b1a18;--op-surface:rgba(255,255,255,0.03);--op-border:rgba(255,255,255,0.08);--op-text:#e7e3da;--op-dim:#a8a299;--op-faint:#8a8378;--op-accent:#cf8a68;}
  .op-head{padding:12px 16px 11px;border-bottom:1px solid var(--op-border);font-size:12.5px;color:var(--op-dim);display:flex;align-items:center;gap:8px;}
  .op-head-ic{color:var(--op-accent);flex-shrink:0;}
  .op-tabs{display:flex;gap:8px;padding:14px 16px 4px;flex-wrap:wrap;}
  .op-tab{position:relative;flex:1 1 130px;min-width:120px;text-align:left;background:transparent;border:1px solid var(--op-border);border-radius:11px;padding:11px 13px;cursor:pointer;color:inherit;font:inherit;transition:border-color .15s,background .15s,box-shadow .15s;}
  .op-tab:hover{background:var(--op-surface);}
  .op-tab-on{border-color:rgba(191,117,81,.5);background:rgba(191,117,81,.07);box-shadow:0 0 0 3px rgba(191,117,81,.1);}
  .op-tab-name{font-size:14.5px;font-weight:600;line-height:1.3;}
  .op-tab-on .op-tab-name{color:var(--op-accent);}
  .op-badge{display:inline-block;margin-top:6px;font-size:10.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;padding:2px 7px;border-radius:20px;background:rgba(191,117,81,.14);color:var(--op-accent);}
  .op-rec{position:absolute;top:10px;right:11px;font-size:10px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;color:var(--op-accent);}
  .op-body{padding:6px 16px 16px;}
  .op-specs{border:1px solid var(--op-border);border-radius:10px;overflow:hidden;margin-bottom:11px;}
  .op-row{display:flex;border-top:1px solid var(--op-border);font-size:13px;}
  .op-row:first-child{border-top:none;}
  .op-k{width:42%;flex-shrink:0;padding:8px 12px;color:var(--op-dim);background:var(--op-surface);}
  .op-v{flex:1 1 0;min-width:0;padding:8px 12px;font-weight:500;}
  .op-note{font-size:13px;line-height:1.6;color:var(--op-dim);padding:0 2px;}
  `;
  return <div className="op-root">
      <style>{css}</style>
      <div className="op-head"><svg className="op-head-ic" xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z" /><path d="m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65" /><path d="m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65" /></svg>{t.pick}</div>
      <div className="op-tabs">
        {opts.map((o, i) => <button key={i} type="button" className={"op-tab" + (i === idx ? " op-tab-on" : "")} onClick={() => setSel(i)}>
            {o.recommend && <span className="op-rec">★ {t.rec}</span>}
            <div className="op-tab-name">{o.name}</div>
            {o.badge && <span className="op-badge">{o.badge}</span>}
          </button>)}
      </div>
      <div className="op-body">
        <div className="op-specs">
          {(cur.specs || []).map((row, i) => <div className="op-row" key={i}>
              <div className="op-k">{row[0]}</div>
              <div className="op-v">{row[1]}</div>
            </div>)}
        </div>
        {cur.note && <div className="op-note">{cur.note}</div>}
      </div>
    </div>;
};

`Windows 11` `RDP` `RDP Wrapper` `Cloudflare`

Windows 11 內建遠端桌面預設只允許單一使用者同時連線。透過 RDP Wrapper Library 可讓多人各自擁有獨立工作階段，無需購買 Windows Server 授權。

<Warning>
  RDP 同時連線數限制是 Microsoft 授權條款的一部分。突破此限制的方法**可能違反授權條款**，請自行評估風險、確認符合組織政策，企業或關鍵業務環境建議改用合法的 Windows Server RDS 授權。本文所有 IP、連接埠、網域均為佔位範例，請替換成自己的值，且不要把真實對外位址、連接埠對應或帳號公開。
</Warning>

## 兩種方法

<OptionPicker
  lang="zh"
  options={[
{
  name: "RDP Wrapper Library",
  badge: "推薦",
  recommend: true,
  specs: [
    ["原理", "包裝 RDP 服務，不改 termsrv.dll"],
    ["穩定性", "較佳，可安全進行 Windows 更新"],
    ["設定複雜度", "中等"],
    ["維護", "偶爾需更新 rdpwrap.ini"],
  ],
  note: "不動系統核心檔，相對安全；本文主推此法。",
},
{
  name: "修改 termsrv.dll",
  specs: [
    ["原理", "直接修補系統檔案解除限制"],
    ["穩定性", "一般，更新可能覆蓋修補"],
    ["設定複雜度", "簡單"],
    ["維護", "Windows 更新後需重新套用"],
  ],
  note: "改系統核心檔風險較高，更新頻率低時才考慮。",
},
]}
/>

## 系統需求

* Windows 11 專業版或企業版、系統管理員權限
* 建議 8GB 以上 RAM，多人同時連線時資源要夠
* 開放 RDP 連接埠（預設 TCP `3389`，可改非標準埠）

## 方法一：RDP Wrapper 設定

<Steps>
  <Step title="下載 RDP Wrapper">
    前往 [RDP Wrapper releases](https://github.com/stascorp/rdpwrap/releases) 下載最新 `.zip`，解壓到容易存取的位置（例如 `D:\RDPWrapper`）。
  </Step>

  <Step title="確認解壓內容">
    應包含 `RDPWinst.exe`、`RDPConf.exe`、`RDPCheck.exe`、`install.bat`、`uninstall.bat`、`update.bat`。
  </Step>

  <Step title="以系統管理員安裝">
    右鍵 `install.bat` →「以系統管理員身分執行」。若存取被拒，暫時關閉 Windows Defender 相關防護再試。程式會安裝到 `C:\Program Files\RDP Wrapper`。
  </Step>

  <Step title="驗證安裝">
    執行 `RDPConf.exe`，檢查 Diagnostics：綠色表示正常，紅色（`not supported`）表示設定檔需更新。
  </Step>

  <Step title="更新 rdpwrap.ini（如有紅色警告）">
    以系統管理員開啟 `C:\Program Files\RDP Wrapper\rdpwrap.ini`，用社群維護的最新設定完全覆蓋其內容：

    ```text theme={null}
    https://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini
    ```

    存檔後重新啟動，再執行 `RDPConf.exe` 確認全綠。
  </Step>

  <Step title="測試多人連線">
    執行 `RDPCheck.exe` 做本機測試，建立多個使用者帳戶，從不同裝置同時連線驗證。
  </Step>
</Steps>

### RDP 服務關鍵設定

<Tabs>
  <Tab title="一般設定">
    | 設定                    | 功能         | 安全建議         |
    | --------------------- | ---------- | ------------ |
    | Enable Remote Desktop | 啟動 RDP 服務  | 搭配防火牆限制來源    |
    | RDP port              | 監聽的 TCP 埠  | 改非標準埠降低自動化攻擊 |
    | Hide users on logon   | 登入畫面隱藏帳號清單 | 避免洩露帳戶資訊     |
  </Tab>

  <Tab title="驗證模式">
    | 模式                               | 安全等級  | 說明                            |
    | -------------------------------- | ----- | ----------------------------- |
    | GUI Authentication Only          | 低     | 建立完整會話後才彈出登入                  |
    | Default RDP Authentication       | 中     | 標準 RDP 加密驗證                   |
    | **Network Level Authentication** | **高** | 建議使用；連線前先完成身分驗證，可擋 DoS 與中間人攻擊 |
  </Tab>

  <Tab title="會話遮蔽">
    | 模式                             | 隱私 | 說明            |
    | ------------------------------ | -- | ------------- |
    | Disable Shadowing              | 最高 | 關閉會話監看        |
    | View only with permission      | 高  | 取得同意後僅檢視      |
    | Full access with permission    | 中  | 取得同意後可完全控制    |
    | Full access without permission | 無  | 無需同意直接接管，侵入性強 |
  </Tab>
</Tabs>

## 對外存取

需從外網連入時，設定路由器連接埠轉發，並建議用 Cloudflare 增加一層防護。

<Steps>
  <Step title="確認內網 IP 並設靜態">
    目標電腦 `ipconfig` 記下 IPv4（例 `192.168.x.x`），在路由器設靜態 IP 或 DHCP 保留，避免位址變動讓轉發失效。
  </Step>

  <Step title="路由器連接埠轉發">
    在路由器「連接埠轉發 / 虛擬伺服器」新增規則：

    | 設定項目  | 範例值               | 說明             |
    | ----- | ----------------- | -------------- |
    | 內部 IP | `192.168.x.x`     | 目標電腦內網 IP      |
    | 外部連接埠 | `<external-port>` | 自訂非標準埠         |
    | 內部連接埠 | `3389`            | 與 RDPConf 設定一致 |
    | 協定    | TCP               |                |

    <Tip>外部埠用非標準值（不要用 3389）可降低被連接埠掃描與自動化攻擊的機率。</Tip>
  </Step>

  <Step title="Windows 防火牆放行">
    `win + R` 輸入 `wf.msc`，新增輸入規則：類型「連接埠」、協定 TCP、連接埠填你的 RDP 埠、動作「允許連線」。
  </Step>

  <Step title="測試連通">
    內網用 `telnet 192.168.x.x 3389` 測試；外網用手機熱點 `telnet <public-ip> <external-port>` 或線上開埠檢測工具驗證。
  </Step>

  <Step title="Cloudflare（擇一）">
    * **A 記錄（快速）**：在 Cloudflare DNS 新增 A 記錄指向你的公網 IP，Proxy 設「DNS only（灰雲）」。
    * **Cloudflare Tunnel（推薦）**：免開路由器埠、自動 TLS、含 DDoS 防護。安裝 [cloudflared](https://github.com/cloudflare/cloudflared/releases) 後：

    ```yaml theme={null}
    # config.yml
    tunnel: <tunnel-id>
    credentials-file: <path-to-credentials>
    ingress:
      - hostname: remote.your-domain.com
        service: rdp://localhost:3389
      - service: http_status:404
    ```
  </Step>
</Steps>

## 用戶端連線

<Tabs>
  <Tab title="PC">
    * 內建「遠端桌面連線」（`mstsc`）：輸入 `位址:連接埠`，帳號密碼登入。
    * Microsoft Remote Desktop 應用程式：新增 PC，填位址與認證。
    * 命令列：`mstsc /v:<host>:<port>`。
  </Tab>

  <Tab title="手機">
    iOS / Android 安裝 **Microsoft Remote Desktop**（Windows App），新增遠端電腦，填對外位址與連接埠、帳號密碼。行動網路下可調低畫質換取流暢度。
  </Tab>
</Tabs>

## 疑難排解

| 症狀             | 可能原因                              | 排查方向                                                  |
| -------------- | --------------------------------- | ----------------------------------------------------- |
| RDPConfig 顯示紅色 | `rdpwrap.ini` 過期或 termsrv.dll 被改過 | 更新 ini、`sfc /scannow`、重裝 RDP Wrapper                  |
| 修補後無法連線        | 服務未重啟、防火牆擋、權限不足                   | 重啟 `TermService`／`UmRdpService`、查防火牆、確認帳號在「遠端桌面使用者」群組 |
| Windows 更新後失效  | 系統檔還原或設定被覆蓋                       | 重查 RDPConf、更新 ini、重啟                                  |
| 多人連線變慢         | 資源／頻寬不足                           | 升級 RAM、降色彩深度、改用有線網路                                   |

<Warning>
  多人共用同一主機跑 GPU 訓練前，先確認其他使用者是否正在用 GPU，避免 `OOM`。
</Warning>

## 安全強化

* 啟用 **NLA**（網路層級驗證），連線前先驗證身分。
* RDP 改非標準埠，並在防火牆設來源 IP 白名單。
* 帳戶鎖定原則（如 5 次失敗鎖 30 分）、稽核登入成功與失敗事件。
* 「允許透過遠端桌面服務登入」只給必要使用者，高風險帳號明確拒絕。
* 強密碼原則 + 雙因素，定期檢視 `TerminalServices-LocalSessionManager` 事件記錄。

## 相關連結

<Note>
  本頁是私人組織 repo [issp-mes-lab/remote-win11-pc](https://github.com/issp-mes-lab/remote-win11-pc) 的公開精簡版，已移除實驗室內部位址、連接埠、帳號等敏感資訊。原始 repo 為私有，需組織權限方可存取。
</Note>

* 原始 repo（私有）：[issp-mes-lab/remote-win11-pc](https://github.com/issp-mes-lab/remote-win11-pc)
* [RDP Wrapper Library](https://github.com/stascorp/rdpwrap)（多人連線核心工具）
* [社群維護的 rdpwrap.ini](https://github.com/sebaxakerhtc/rdpwrap.ini)
* [Cloudflare Tunnel (cloudflared)](https://github.com/cloudflare/cloudflared/releases)
