unable to run
lyris85 opened this issue · 7 comments
I just tried on a Windows 11 Sandbox (https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-overview) and on a brand new Windows 11 VM from the ISO here https://www.microsoft.com/en-us/software-download/windows11 and it works fine.
So I guess it's related to your security settings or more generally how your machine is configured, but I'm unsure what's exactly the problem. There are multiple processes that needs access:
- VCamSample.exe
- SvcHost.exe which runs two processes: the frame server and the frame server monitor like we can see here:
Access denied at that point is usually because these two services have a problem to run, or they can't access the registry of the binaries where the VCamSampleSource was registered.
Oh and ... maybe it's simply due the fact that you downloaded the binaries from the internet, not compiled them by yourself. So you must remove the Mark of the Web (https://en.wikipedia.org/wiki/Mark_of_the_Web) click on "Unblock" on the .zip file you downloaded and press OK:
Have you registered this new VCamSampleSource.dll output files?
It works fine (downloaded or rebuilt) in a brand new VM with these specs:
Security issues can arise from many causes and Windows 11 Virtual Cam involves at least 3 different processes that all need registry (read) access. Difficult to say w/o being able to reproduce.
You can try to use procmon https://learn.microsoft.com/en-us/sysinternals/downloads/procmon to check access denieds (on files and/or registry keys), and/or build both binaries in Debug and check the traces the sample outputs, using what's described here https://github.com/smourier/VCamSample?tab=readme-ov-file#tracing
FYI information I was able to run the software downloaded from your repo. But building it doest work
Ok I think the problem is the Frame Server & Frame Server Monitor services (running as svchost.exe
with special command lines) must load VCamSampleSource.dll
in-process and they're running under different credentials (Local Service & Local System respectively), so they just get an access denied when they load this dll from where you compile, and this access denied is then propagated to VCamSample when it calls IMFVirtualCamera::Start
.
I guess you compile in a directory under your compiling user's root, for example something like C:\Users\<your login>\source\repos\VCamSample\x64\Debug
or somewhere restricted in some way.
It works with the version I built because I suppose you download it (and register it there) under a directory that's accessible by the two Frame Server services.
So the solution is just to copy VCamSampleSource.dll
once built somewhere where everyone has access and register it from here (or build and register where everyone has access)