🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

6382閲覧

WPFアプリでコマンドプロンプトを操作したい

sato4000

総合スコア42

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2019/09/21 01:26

編集2019/09/21 05:46

WPFアプリでコマンドプロンプトからcurlを叩いて、レスポンスを読み取るアプリを作成しようとしているのですが、curlのコマンドが認識されません。

実行結果
'curl' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

手動でコマンドプロンプトを開いて、実行すると問題なく認識されます。
下記ソースコードでは何か問題があるのでしょか。ご教示願います。

C#

1 // Process オブジェクトを生成 2 System.Diagnostics.Process p = new System.Diagnostics.Process(); 3 //ComSpec(cmd.exe)のパスを取得して、FileNameプロパティに指定 4 p.StartInfo.FileName = 5 System.Environment.GetEnvironmentVariable("ComSpec"); 6 //出力を読み取れるようにする 7 p.StartInfo.UseShellExecute = false; 8 p.StartInfo.RedirectStandardOutput = true; 9 p.StartInfo.RedirectStandardInput = false; 10 //ウィンドウを表示しないようにする 11 p.StartInfo.CreateNoWindow = true; 12 13 string cmd = " curl -X POST -d \"user=" + User.Text + "\"" + URL.Text; 14 15 p.StartInfo.Arguments = @"/c " + cmd; 16 17 //起動 18 p.Start(); 19 //出力を読み取る 20 string key = p.StandardOutput.ReadToEnd(); 21 22 23---

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/09/21 02:32

前半と後半で書いてあることが違います。整理してください。
sato4000

2019/09/21 05:04

修正しました。
Zuishin

2019/09/21 07:50

再現しません。curl の起動に成功します。 curl がどこにあるのか、また環境変数 PATH はどうなっているのか書いてください。
Zuishin

2019/09/21 07:52

それと、コマンドプロンプトというのは PowerShell ではなくコマンドプロンプトに間違いありませんか?
sato4000

2019/09/21 08:47

検索すると複数見つかるのですが、とりあえず”C:\Windows\System32”にはあります。 環境変数のpathに%SystemRoot%\system32があるのですが、これではだめなのでしょうか? 手動では問題なく実行できます。 もうしわけありませんが、PowerShell についてよくわかっていません。ただSystem.Environment.GetEnvironmentVariable("ComSpec");でcmd.exeの絶対パスを読み込んでいるので、コマンドプロンプトであっているとは思います。 よろしくお願いいたします。
Zuishin

2019/09/21 09:26

curl 以外を指定してやってみるとどうなりますか?
sato4000

2019/09/24 01:51

返信遅れて申し訳ありません。 pingで試したのですが、普通に実行できました。 ----- 127.0.0.1 に ping を送信しています 32 バイトのデータ: 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 の ping 統計: パケット数: 送信 = 1、受信 = 1、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 0ms、最・・= 0ms、平均 = 0ms
Zuishin

2019/09/24 01:56

謎ですね。curl がインストールされていないとしか受け取れないんですが、それはインストールされていると。 リモートで実行しようとしているということはありませんか? たとえば、curl はローカルにインストールされているけれど、このプログラムはサーバーサイドで動いているとか。
sato4000

2019/09/24 04:01

curlはwindows10に標準でインストールされていました。 このプログラムはローカルの環境で作成して、動作させています。 プルパス(C:\Windows\System32\curl.exe)で実行しても、管理者権限で実行しても全く同じ結果なのでよくわからないです。 curl使わずにHttpClientを使用することも検討してみます。
Zuishin

2019/09/24 04:05

curl を呼び出すバッチを作り、そのバッチをこのプログラムから呼び出すとどうなりますか?
sato4000

2019/09/24 04:35

バッチファイルを呼び出そうとしたら「指定したファイルが見つかりません」というエラーになりました。 curlだけではなくいろいろ参照できていないようです。なぜかpingやipconfigは可能でしたが。 ipconfigの結果的に別の環境で動作していることもなさそうです。
Zuishin

2019/09/24 04:42

いや、やはり別の環境で動いてそうです。何か心当たりはありませんか?
sato4000

2019/09/24 05:51

自分のアプリケーションの実行ファイルのパスを取得したのですが、一応自分のPCであってそうなんですよね。実行ファイルは自分のPCにあっても別の環境で実行されてしまうこともあるのでしょうか?
Zuishin

2019/09/24 06:00

仮想環境や WSL やその他何かのサンドボックスを使っているということもありませんか? UWP ではなく WPF ですよね?
Zuishin

2019/09/24 06:04

またそのプログラムから dir C:\Windows\System32 > c:\dir.txt を実行した時、c:\dir.txt は作成できますか? またそのファイルの中に curl.exe は含まれていませんか?
sato4000

2019/09/24 06:40

仮想環境は使用していないです。他については調査してみます。 ご迷惑おかけして申し訳ありません。
sato4000

2019/09/24 09:07

>またそのプログラムから dir C:\Windows\System32 > c:\dir.txt を実行した時、c:\dir.txt は作成できますか? >またそのファイルの中に curl.exe は含まれていませんか? アクセスが拒否されてファイルが作成できません。 手動でやっても同様にアクセスが拒否されました。
Zuishin

2019/09/24 09:08

では拒否されないところに作ってみてください。
sato4000

2019/09/24 09:10

WSLは使用していなく、WPFです。 サンドボックス的なのはあり得ると思います。 他のPCで動作するか確認してみようと思います。 ありがとうございます。
sato4000

2019/09/24 09:27

>またそのプログラムから dir C:\Windows\System32 > c:\dir.txt を実行した時、c:\dir.txt は作成できますか? >またそのファイルの中に curl.exe は含まれていませんか? 作成はできましたが、curl.exeは含まれていませんでした。
Zuishin

2019/09/24 09:48

やはり違うところで実行されてる気がしますね。
sato4000

2019/09/24 11:08

一応VisualstudioでWPFのプロジェクト作って、ちょろっと動かしているだけなんですよね。 プロジェクトの設定で実行環境が変わってしまうこともあるのでしょうか?
Zuishin

2019/09/24 11:42

普通はありません。しかし、あるはずのファイルが無くなることも普通はありません。
Zuishin

2019/09/24 11:58

あるいは、セキュリティソフトで似たような機能を提供するものはありますか?
sato4000

2019/09/26 01:26

>https://forest.watch.impress.co.jp/docs/shseri/win10may2019/1182586.html >この機能は有効化されていますか? 有効になっていませんでした。 セキュリティの設定が厳しい支給されたPCなのでそれが原因の可能性が高いと思います。 Httpclientを利用する方向で検討しています。 ありがとうございました。
guest

回答1

0

自己解決

コメントにもあるように、私のPCの問題のようなのでクローズします。
Zuishinさんコメントいただきありがとうございました。

投稿2019/09/26 03:50

sato4000

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問