record: native WGC capture fails on Windows 10 22H2 — CreateForMonitor returns E_ACCESSDENIED (0x80070005)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 22/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- electron, typescript
- Ambito
- desktop
Direzione di ricerca
Start at the fallback routing in electron/ipc/handlers.ts (around lines 2457-2466, where a missing helper returns missing-helper) and the renderer branches in src/hooks/useScreenRecorder.ts (around lines 1227-1230 and 1849-1861). The failure itself is inside the closed-source-to-you native wgc-capture.exe, which the reporter cannot be expected to debug from the repo. Done would mean a clearly reasoned decision on whether a CreateForMonitor failure should fall back to browser capture with a warning, which needs maintainer input first.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Native Windows capture fails on Windows 10 22H2: CreateForMonitor returns E_ACCESSDENIED (0x80070005)
Copy the whole of this file into the GitHub issue body. Attach
wgc-capture-error-dialog.png (in this folder) as the screenshot.
Summary
On a stock Windows 10 Pro 22H2 (build 19045.6466) machine, recording never starts: the native capture helper reports it cannot create a WGC capture item for the selected monitor. Every attempt to record ends with the dialog in the attached screenshot.
Error: WARNING: Could not opt out of power throttling (error 87)
{"event":"ready","schemaVersion":2} ERROR: CreateForMonitor failed (hr=0x80070005)
ERROR: Failed to initialize WGC display session
The machine is well above the documented minimum requirements, and other Chromium-based software on it captures the screen without any problem, so I do not think this is a hardware or OS-capability limitation. I could not find any policy, privacy setting, remote session or display driver on this machine that would explain the refusal — details of what I ruled out are below, in case it saves you time.
Environment
| OpenScreen | 2.0.0 (Windows x64; native binaries are byte-identical to the official installer — see note at the end) |
| Electron | 41.2.1 (bundled) |
| OS | Windows 10 Pro 22H2, build 19045.6466 |
| CPU | 12th Gen Intel Core i7-12700K (SSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F all present) |
| GPU | NVIDIA GeForce RTX 3060, driver 32.0.16.1656 (2026-08-20) |
| Displays | 2 × AOC2402, extended desktop; the failing source is the secondary display at physical origin x=2560 (2560×1440 @ 125%) |
| Session | SESSIONNAME=Console, local interactive; not RDP; OpenInputDesktop succeeds |
| Chrome / Edge | 155.0.8059.41 / 155.0.4283.45 — both run and capture normally on this machine |
| Virtual display drivers | none (single NVIDIA adapter) |
| Virtualisation | none (ASUS/AMI BIOS, physical machine) |
| Third-party AV/security | none installed; Microsoft Defender running with default settings |
So Chromium's sandbox appears unable to initialise for the Electron main process on
this machine, while Chromium 155 in Chrome/Edge is unaffected. I am reporting it
because it may be the same underlying condition, and because the silent
exit 0 with no diagnostic output made the original problem very hard to see. Happy
to run whatever collection steps you want (Procmon, WER dumps, sandbox logs) if it
helps.
Workaround I tried
is-native-windows-capture-available returns missing-helper when the helper file is
absent (electron/ipc/handlers.ts:2457-2466), and the renderer then falls through to
Chromium's own getDisplayMedia pipeline
(src/hooks/useScreenRecorder.ts:1227-1230, then :1849-1861). Renaming
resources/electron/native/bin/win32-x64/wgc-capture.exe therefore switches the app
onto the browser pipeline by design. On this machine that still did not produce a
usable recording, so I am not offering it as a fix — only as evidence that the app's
own fallback routing behaves as documented.
Ask
- Is there any additional diagnostic the helper could print at the point
CreateForMonitorfails (theHMONITORvalue, the monitor rect, the process token/integrity,GraphicsCaptureSession::IsSupported())? Right nowE_ACCESSDENIEDis the only signal, and nothing in the app logs distinguishes "monitor rejected" from "capture refused for this process". - Would you consider reporting
CreateForMonitorfailure asmissing-helper-style unavailable (falling through to browser capture with a warning) rather than throwing and blocking the recording entirely? On a machine like this one the browser pipeline is the only path that could still work. - If it is useful, I can collect full WER dumps or a Procmon trace around the
CreateForMonitorcall.
Note on the build used for these logs: it is OpenScreen 2.0.0 built from the
v2.0.0 tag, with one upstream post-2.0.0 Windows fix ported in
(the CONTENT_PROTECTION_BREAKS_CLICK_THROUGH gate from
electron/windows.ts, needed because 2.0.0's click-through HUD is unusable on
Windows 10). wgc-capture.exe, compositor_view.node and every other native binary
are taken unmodified from the official Openscreen.Setup.2.0.0.exe payload — so the
capture failure above is produced by your shipped helper, not by anything I changed.
The screenshot and the two logs in this report were produced by that build running on
the machine described.
- Lingua principale
- TypeScript
- Stelle
- 3.7k
- Fork
- 231
- Merge medio
- 16h 25m
- PR unite (30g)
- 331
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di getopenscreen/openscreen
-
build.yml: macOS arm64 DMG fails, cargo missing on the macos-26 runner imageForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
getopenscreen/openscreen#1423 ·
I maintainer di solito rispondono entro 1 giorno
-
Native review wanted: machine-translated recording bar tooltips (14 locales)Forse di nuovo libera @auberginewly l’ha presa 20 giorni fa e non c’è nessuna pull request aperta. Apertagood first issue help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
getopenscreen/openscreen#913 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 57/100
getopenscreen/openscreen#1422 ·
I maintainer di solito rispondono entro 1 giorno
-
macOS: pick the YCbCr matrix per buffer instead of hard-coding BT.709Forse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
getopenscreen/openscreen#1420 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
getopenscreen/openscreen#1419 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di getopenscreen/openscreen
Issue simili
-
e2e-failure ready-to-code
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
redhat-developer/rhdh-plugin-export-overlays#4616 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
-
ai-handle
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
nextlevelbuilder/dewee-web-v2#73 ·
I maintainer di solito rispondono entro 1 giorno
-
backend bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
PoCInnovation/Distribox#255 ·
I maintainer di solito rispondono entro 1 giorno