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

C# 如何在UWP应用程序中获取当前在Azure VM中运行的进程列表,c#,azure,uwp,C#,Azure,Uwp,我想知道是否有人能帮我在我的一个实用程序中添加一个功能。我有一个用UWP制作的控制面板应用程序,我想加入一个功能,让您可以查看批处理程序是否在azure vm上运行 所以外行对我的想法是,我想获得任务管理器流程选项卡中显示的内容,并将其显示在我的应用程序中 关于如何做到这一点,我已经走了一些路线,但我似乎遇到了UWP本身的绊脚石,或者Azure平台,或者两者兼而有之 所以我看了很多文档,其中最有用的是: 这对我来说非常理想,但它似乎不适用于UWP平台 我得到: InvalidOperation

我想知道是否有人能帮我在我的一个实用程序中添加一个功能。我有一个用UWP制作的控制面板应用程序,我想加入一个功能,让您可以查看批处理程序是否在azure vm上运行

所以外行对我的想法是,我想获得任务管理器流程选项卡中显示的内容,并将其显示在我的应用程序中

关于如何做到这一点,我已经走了一些路线,但我似乎遇到了UWP本身的绊脚石,或者Azure平台,或者两者兼而有之

所以我看了很多文档,其中最有用的是:

这对我来说非常理想,但它似乎不适用于UWP平台

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

在这个错误上陷入困境似乎并没有为我的用例提供任何解决方案

我还看了

但这需要我向azure门户添加应用程序,如果我能帮上忙的话,我宁愿不这样做

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

你们中有谁能提供任何具有上述约束条件的最佳实践方法来获得这些信息吗

非常感谢。

您可以在UWP中使用“GetProcessByName”方法,在UWP中添加fulltrust桌面扩展。在该扩展中,您可以进行GetProcessByName()调用,并将信息传递回UWP。有关如何在此处添加fulltrut扩展的一些信息:docs.microsoft.com/en us/uwp/api/…,我的博客上的完整教程:stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-1


我同意这比人们希望的更复杂,但这是如何绕过UWP appcontainer限制的问题。

您可以通过在UWP中添加fulltrust桌面扩展来做到这一点。在该扩展中,您可以进行GetProcessByName()调用,并将信息传递回UWP。有关如何在此处添加fulltrut扩展的一些信息:,我的博客上的完整教程:@StefanWickMSFT:请添加此作为答案。这将帮助其他有同样想法的人提问。好的,完成。将此移到一个答案。
        // Get all instances of Notepad running on the specific computer, using machine name.
        Process[] remoteByName = Process.GetProcessesByName("notepad", "myComputer");
var vm = azure.VirtualMachines.GetByResourceGroup(groupName, vmName);