Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# windows后台服务如何获取UWP包信息?_C#_Service_Uwp_Package - Fatal编程技术网

C# 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

我正在尝试从windows后台服务获取已安装UWP应用程序的软件包信息。在这个服务中,我使用了以下代码

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的一部分。我说的是一个