Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

unable to run #1

Closed
lyris85 opened this issue Apr 14, 2024 · 7 comments
Closed

unable to run #1

lyris85 opened this issue Apr 14, 2024 · 7 comments

Comments

@lyris85
Copy link

lyris85 commented Apr 14, 2024

Screenshot 2024-04-14 132610

I tried on 2 different computer and it does the same problem. I registred the .dll with regsvr32 VCamSampleSource.dll as administrator

@smourier
Copy link
Owner

smourier commented Apr 14, 2024

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:

image

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:

image

@lyris85
Copy link
Author

lyris85 commented Apr 15, 2024

I tried again using your recommandation in window sandox, same result: access denied.

Here is the config I used to build the project:
Screenshot 2024-04-15 073429
I tried all config ( x86 debug and release, x64 debug and release)

Here is the output build:
Screenshot 2024-04-15 074220

I have Windows 11 Pro version 23H2

@smourier
Copy link
Owner

Have you registered this new VCamSampleSource.dll output files?

@lyris85
Copy link
Author

lyris85 commented Apr 15, 2024

Yes I did it lik
Untitled
e this:

@smourier
Copy link
Owner

It works fine (downloaded or rebuilt) in a brand new VM with these specs:

image

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

@lyris85
Copy link
Author

lyris85 commented Apr 15, 2024

FYI information I was able to run the software downloaded from your repo. But building it doest work

@smourier
Copy link
Owner

smourier commented Apr 15, 2024

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.

image

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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants