3

我正在 Windows RT 中开发应用程序。我确实需要在 Windows RT(C#) 中运行/调用 PowerShell 或 CMD 命令。请帮我弄清楚。提前致谢

4

1 回答 1

1

虽然您无法直接针对 Windows RT 中的 PowerShell .NET 引擎进行编程,但您可以通过套接字访问桌面。但是,这假定您有能力确保桌面套接字侦听器已安装并运行。但是,有了它并运行,您可以向它发出命令并让它调用 cmd.exe(或通过 EXE 或 in-proc 引擎的 powershell)。WinRT 中最好的引擎部件允许您连接和使用 PowerShell 远程处理端点。考虑到它最终只是一个套接字,它可以由 Microsoft 以外的人完成,但您必须通过大量的 WS-MAN 协议才能弄清楚它是如何工作的。我认为通过套接字发送的简单字符串可能更容易,例如'powershell -command "& { Get-Process }"''cmd /c dir c:\'. :-)

以下是一些代码片段作为概念证明:

WinRT 代码片段:

private async void _button_OnClick(object sender, RoutedEventArgs e)
{
    string content;
    try
    {
        var client = new HttpClient();
        client.DefaultRequestHeaders.Add("user-agent", 
            "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
        var response = await client.GetAsync("http://localhost:54649/");
        if (response.StatusCode == HttpStatusCode.OK)
        {
            content = await response.Content.ReadAsStringAsync();
        }
        else
        {
            content = response.StatusCode.ToString();
        }

    }
    catch (Exception ex)
    {
        content = ex.Message;
    }

    await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        _textBlock.Text = content;
    });
}

在桌面端,这是一个脑残的 MVC 控制器的片段:

public class HomeController : Controller
{
    //
    // GET: /Home/
    public string Index()
    {
        return "Hello World. The time is " + DateTime.Now;
    }
}
于 2013-01-18T18:20:17.253 回答