如何获取我的 C++ 应用程序所需的提升权限?

问题描述 投票:0回答:1

我正在制作一个 C++/winRT GUI 应用程序,该应用程序使用 Microsoft Media Foundation 的 IMFVirtualCamera 接口来创建虚拟相机设备。

虚拟相机创建:

winrt::check_hresult(MFCreateVirtualCamera(
    MFVirtualCameraType_SoftwareCameraSource,
    MFVirtualCameraLifetime_Session,
    MFVirtualCameraAccess_AllUsers,
    cameraName,
    L"{7B89B92E-FE71-42D0-8A41-E137D06EA184}",
    nullptr,
    0,
    pVirtualCamera.put()
));

启动虚拟相机的代码:

try {
    winrt::check_hresult(pVirtualCamera->Start(nullptr));
}
catch (winrt::hresult_error const& ex)
{
    std::stringstream ss;
    ss << winrt::to_string(ex.message()) << " - " << ex.code();
    LOG(LogLevel::ERR, ss.str());
}

Start() 函数实际上会抛出一个错误,指出

"Access is denied"
。我尝试以管理员身份运行 Visual Studio,并将
UAC Execution Level
中的
Properties > Linker > Manifest File
设置为
requireAdministrator
。问题依然存在。

c++ visual-studio ms-media-foundation
1个回答
0
投票

正如 Simon 的评论中所指出的,将

access
函数中的
MFCreateVirtualCamera
参数切换为
MFVirtualCameraAccess_CurrentUser
可以解决“访问被拒绝”错误,因为需要较低的权限。

© www.soinside.com 2019 - 2024. All rights reserved.