1

PackageManager类只能在完整的桌面应用程序中使用 - 它直接从 WinRT 应用程序使用(甚至获取为当前用户安装的应用程序列表)会导致UnauthorizedAccessException.

我希望通过 Microsoft 在 Windows 8.1 Update 1 中引入的新代理组件,可以绕过这一点并实际使用该类(目前,只能直接从桌面应用程序中使用它)。

令我惊讶的是,它没有用,我只是UnauthorizedAccessException再次感到恐惧。我认为代理组件应该在任何应用程序容器之外的单独进程中运行,因此,我不应该面临任何限制。我什至尝试执行一个控制台应用程序,以PackageManager将代理组件作为一个单独的进程来满足我的需求,但这也因同样的异常而失败。

我想不出一种方法来为您提供重现异常的简单代码 - 创建一个代理组件并从 WinRT 应用程序使用它,我遵循了Harry Pierson 的关于代理组件的系列

有人可以评论为什么会这样吗?

4

1 回答 1

0

根据文档,此类需要管理员权限。因此,WinRT 和 Store 应用程序似乎被沙盒化得太紧,即使从管理场所启动也无法提升自己。相反,如果在 admin 下启动,hello-world 控制台应用程序可以使用 PackageManager 自由操作。

于 2015-06-03T16:53:43.260 回答