如何在UWP应用中获取Azure VM中当前正在运行的进程的列表

时间:2019-05-17 12:48:04

标签: c# azure uwp

我想知道是否有人可以通过我想添加到我的一个实用程序中的功能来帮助我。我有一种用UWP制作的控制面板应用程序,我想合并一个功能,使您可以查看批处理处理器是否在Azure虚拟机上运行。

因此,外行对我想要的东西的想法是,我想获取出现在“任务管理器”的“进程”选项卡中的内容,并将其显示在我的应用程序中。

我已经在如何做到这一点上走了几条路,但是我似乎遇到了围绕UWP本身或Azure平台或两者的绊脚石。

所以我看了很多文档,其中最有帮助的是这些文档:

https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.getprocesses?view=netframework-4.8

        // Get all instances of Notepad running on the specific computer, using machine name.
        Process[] remoteByName = Process.GetProcessesByName("notepad", "myComputer");

这对我来说是理想的选择,但似乎不适用于UWP平台。

我得到: InvalidOperationException:进程性能计数器已禁用,因此无法执行请求的操作。

解决该错误似乎并没有为我的用例提供任何解决方案。

我也看着 https://docs.microsoft.com/en-us/azure/virtual-machines/windows/csharp

var vm = azure.VirtualMachines.GetByResourceGroup(groupName, vmName);

但这需要我将应用程序添加到我们的azure门户中,如果可以帮助的话,我宁愿不这样做。

我也尝试过模仿的路线,但是虚拟机本身似乎不允许这样做。

你们中的任何人都可以提供具有上述约束条件的最佳实践方法吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

通过在UWP中添加完全信任桌面扩展,可以在UWP中使用“ GetProcessByName”方法。然后,在该扩展中,您可以调用GetProcessByName()并将信息传递回您的UWP。有关如何在其中添加fulltrut扩展名的一些信息:docs.microsoft.com/zh-cn/uwp/api/…,我的博客上的完整教程位于:stefanwick.com/2018/04/06/uwp-with-desktop -extension-part-1

我同意这是人们所希望的更复杂的方法,但这是可以解决此处UWP appcontainer限制的方法。