C# windows后台服务如何获取UWP包信息?
我正在尝试从windows后台服务获取已安装UWP应用程序的软件包信息。在这个服务中,我使用了以下代码C# windows后台服务如何获取UWP包信息?,c#,service,uwp,package,C#,Service,Uwp,Package,我正在尝试从windows后台服务获取已安装UWP应用程序的软件包信息。在这个服务中,我使用了以下代码 var packageManager = new Windows.Management.Deployment.PackageManager(); packageManager.FindPackage("myPackageName"); 我一直收到错误“访问被拒绝”,没有进一步的信息!根据需要,我需要将packageQuery设备功能添加到我的应用程序清单文件中。但此“packageQuery
var packageManager = new Windows.Management.Deployment.PackageManager();
packageManager.FindPackage("myPackageName");
我一直收到错误“访问被拒绝”,没有进一步的信息!根据需要,我需要将packageQuery设备功能添加到我的应用程序清单文件中。但此“packageQuery”功能不在列表中
我不知道该怎么办了。我希望你们能帮忙!
提前谢谢 您必须手动将此功能添加到
包.appxmanifest
中的列表中,因为它在清单设计器中尚不可用。将该文件作为XML文件打开,您可以在其中声明您的功能。首先修改根元素,如下所示:
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp wincap rescap">
现在在下面找到
元素并添加您的功能:
<rescap:Capability Name="packageQuery" />
不,背景任务是UWP的一部分。我说的是Windows服务应用程序 如果它是一个经典的windows服务应用程序,那么,您的问题与 那么,如何检查UWP API是否可以从经典桌面应用程序调用?上述MSDN文件对此进行了解释: 无论何时,只要您希望从经典桌面应用程序调用特定的UWP API,都要遵循此过程。此过程将回答是否允许从经典桌面应用程序调用API的问题。首先,访问Windows运行时应用程序的Windows API参考,找到您感兴趣的类或成员API的参考主题,向右滚动到主题底部的“属性”部分,并检查是否列出了DualApiPartition属性 如果列出了DualApiPartition属性,如果API不需要调用应用程序具有包标识,则允许从经典桌面应用程序调用API。如果API确实需要调用应用程序具有包标识,则不允许从经典桌面应用程序调用API。但是API可以从已经转换为UWP应用程序的经典桌面应用程序调用 如果未列出DualApiPartition属性,则不允许从经典桌面应用程序调用API 然后,检查文档时,不会列出DualApiPartition属性
因此,
Windows.Management.Deployment.PackageManager
API不允许从Windows服务应用程序调用。我已按照您的指示将packageQuery添加到我的uwp Package.appxmanifest中,并再次调用FindPackage方法,但结果保持不变。“访问被拒绝访问被拒绝”。请注意,我不是从uwp应用程序而是从windows后台服务校准FindPackage方法。@RacoonHug是“windows后台服务”吗?不,后台任务是uwp的一部分。我说的是一个