c++ - 您可以在没有管理员的情况下注册 directshow 过滤器吗?
问题描述
我想注册一个不需要管理员的虚拟 directshow 源设备。在另一篇文章中,我看到有人提到您可以通过 HKEY_CURRENT_USER 而不是 HKEY_CLASSES_ROOT 或 HKEY_LOCAL_MACHINE 为每个用户帐户注册 COM 类。这行得通,我可以通过 HKEY_CURRENT_USER\Software\Classes 注册课程而无需 UAC。
要让源/过滤器出现,我需要调用IFilterMapper2::RegisterFilter
. 如果没有 UAC 特权,这将失败。( E_ACCESSDENIED General access denied error.
)。
Microsoft 并不完全清楚对 RegisterFilter 的调用实际上做了什么。我知道它会在下面创建一个注册表项,HKEY_CLASSES_ROOT\CLSID\category clsid\Instance\filter clsid
但其中一个关键值是 FilterData,它是一个二进制值,理论上应该匹配https://docs.microsoft.com/en-us/windows/win32/api/strmif/ns-strmif -regfilter2这个结构;但是数据并没有完全对齐,所以他们也必须在其中写入其他数据。
无论如何要在用户帐户级别注册过滤器?
解决方案
注册信息在下面,HKEY_LOCAL_MACHINE
因此您必须拥有本地管理员帐户和提升的权限才能进行注册。
推荐阅读
- python - 无法使用烧瓶邮件python将附件添加到邮件
- python-3.x - 如何找到在 python 中加载应用程序所需的时间?
- angular - 从 Angular 应用程序访问 YouTube API 时,gapi.client.youtube 未定义
- reactjs - 反应网格布局错误:
未安装在 DragStart 上 - python - 在长字符串中搜索关键字后的数字
- flutter - 标记未在谷歌地图上显示
- authentication - 为同一个 kuzzle 帐户处理多个 oauth 策略
- php - 当我在单个 AWS 实例中运行两个 Wordpress 站点时,网站无法加载
- java - 如何使用流 API 从 java 中的对象列表中删除重复项
- mysql - 带顺序的数据库模式设计