如何访问 UWP 应用中的注册表项?

Posted

技术标签:

【中文标题】如何访问 UWP 应用中的注册表项?【英文标题】:How to access registry key in a UWP app? 【发布时间】:2018-07-31 16:00:37 【问题描述】:

我想通过 UWP 应用访问 windows10 注册表项。 键为:\HKEY_LOCAL_MACHINE\SOFTWARE\MyCompanyName\MyName 我找不到任何函数调用来完成它。 请指出我该怎么做? 谢谢,

【问题讨论】:

【参考方案1】:

如果您的应用是纯 UWP 应用,这是不可能的。 UWP 应用程序的构建目标是轻量级并尽可能避免注册表,因此您的应用程序根本无法访问注册表(尽管某些注册表项是在安装应用程序时由系统创建的,例如 URI 协议注册等。 )。

如果您确实需要访问注册表并且不需要在 Microsoft Store 上发布您的应用,您可以实现 Brokered Windows Runtime Component。这使您可以从 UWP 调用完全信任的 .NET Framework 库,进而可以访问注册表。但是,使用 Brokered Components 的应用将无法通过认证。

最后,如果您的应用是 UWP 桌面桥应用,您可以访问注册表 - 请参阅 documentation。

【讨论】:

【参考方案2】:

您可以从从 UWP 应用程序启动的Win32runFullTrust 后台进程读取注册表值,并且可以从从该runFullTrust 进程启动的“提升的”Win32 应用程序在HKEY_LOCAL_MACHINE 配置单元中写入值。

这些技术非常强大,在从 Windows 应用商店部署的 UWP 应用中使用它们需要获得 Microsoft 的特别审查和许可。这些技术由 OEM 使用,但不仅限于它们。如果你有充分的理由并且能够解释清楚,你就有可能获得批准。

我已经写了一个示例和文章来说明如何做到这一点,你可以找到它here。

【讨论】:

以上是关于如何访问 UWP 应用中的注册表项?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UWP 应用程序的命令行参数启动 win32 exe?

如何在没有 azure 的情况下为 UWP 注册推送通知?

从服务应用程序访问访客帐户系统注册表配置单元

访问注册表项会引发异常?

NotificationHub 在注册标签 UWP 中发送通知

如何启用 ASP.NET 对注册表项 'HKEY_CURRENT_USER\Software\myAppKey\subdir' 的写访问?