3

Windows RTでアプリケーションを開発しています。WindowsRT(C#)でPowerShellまたはCMDコマンドを実行/呼び出す必要があります。理解するのを手伝ってください。前もって感謝します

4

1 に答える 1

1

Windows RT で PowerShell .NET エンジンに対して直接プログラミングすることはできませんが、ソケット経由でデスクトップにアクセスできます。ただし、これは、デスクトップ ソケット リスナーがインストールされ、実行されていることを確認できることを前提としています。ただし、それを配置して実行すると、コマンドを発行して cmd.exe (または EXE またはインプロセス エンジンを介した 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 に答える