2016-07-14 8 views
0

コンソールプログラムでC#を使用して新しいcmdプロセスを作成しましたが、stdinまたはstdoutはリダイレクトしませんでしたので、ここからコマンドラインに入力できます。 (私はそこからtelnetを使用する際に問題がありましたので、この手順は単なる調査に過ぎませんでした) ウィンドウに入力して出力を受け取ることができます。 c:Windows \ system32に切り替えると、dir te * .exeと入力すると何も表示されません。 私は直接作成した別のコマンドプロンプトで、ファイル(telnet.exe)が表示されます。 何が間違っているかについてのご意見はありますか?C#cmdプロンプトでtelnet.exeが表示されない

{ 

     ProcessStartInfo startInfo = new ProcessStartInfo(@"cmd.exe"); 
     startInfo.UseShellExecute = false; 
     startInfo.CreateNoWindow = true; 
     startInfo.WindowStyle = ProcessWindowStyle.Normal; 
     startInfo.CreateNoWindow = false; 
     startInfo.Arguments = host; 
     using (Process p = new Process()) 
     { 
      p.StartInfo = startInfo; 
      p.Start(); 
     } 
    } 
+0

を 'どこtelnet'コマンドプロンプトに入力してみてください - あなたの実行ファイルが置かれている場所、それはあなたを教えてください。結果は何ですか? –

+0

Windows 7で動作している - これを忘れてしまった。 –

+0

C:\ Windows \ system32> telnet INFO:指定されたパターンのファイルを見つけることができませんでした。 –

答えて

3

Windows 7以降、Windowsの機能としてTelnetをインストールする必要があります。

Hereあなたは勝つ7でTelnetを有効にするためのガイドを持っているが、それはあなたがサイトを読み込むことができません念のために8.1を勝つために適用だとWindows 10

、手順は次のとおりです。

コントロールパネル - >プログラム - > Windows機能を有効または無効にする - > Telnetクライアントオプションを見つけるまでスクロールダウン

+0

からアプリを実行してください。この記事は私の問題と同じです。 http://stackoverflow.com/questions/33984146/ c-sharp-new-process-created-can-access-certain-files?rq = 1 –

0

上記の記事に基づいて、プロジェクトのビルドプロパティを確認しました。 プラットフォームターゲットがx86に設定されていました。 「すべてのCPU」に変更するだけで、少なくともプログラムを見ることができます!

ところで、私は関連でこれを投稿する前に数日間のための答えを探したが、余裕を持っている - 「作成したC#の新しいプロセスは、特定のファイルにアクセスできません」私に情報を与えた - 私はこの質問に

感謝を作成した後、 、ヒューリスティック!

+0

ハッハッハ!それは私の応答をタイプするのにずっと時間をとることで得られるものです。私はあなたが答えを見つけてうれしいです。 – seairth

+0

次のコマンドを使用すると、システムネイティブのsystem32ビットフォルダ、nomatterの32ビットまたは64ビットプロセスまたはOSの文字列sysFolder64Bitを常に取得できます。 if(Environment.Is64BitOperatingSystem &&!Environment.Is64BitProcess) { sysFolder64Bit = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows)、 "sysnative"); } else { sysFolder64Bit = Environment.GetFolderPath(Environment.SpecialFolder.System); } ' –

+0

' sysnative'フォルダは、64ビットシステム上の32ビットプロセスでのみ表示されます。それ以外の組み合わせは存在しません。 –

0

これは本当に悪意のあるものです。 Windowsエクスプローラを使用しているときやコマンドプロンプトを直接開くときは、64ビットプロセスを開始します。 Process.Start()で「cmd.exe」を起動すると、起動しているプロセスと同じバージョンが表示されます。あなたの場合、32ビットプロセスを作成しているので、32ビットバージョンのコマンドプロンプトが表示されます。ターゲットx64を作成するためにプロジェクトを変更すると、ファイルが表示されます!

これはなぜですか? 32ビットまたは64ビットのアプリケーションを通じてSystem32にアクセスしているかどうかによって、異なる System32フォルダに実際にアクセスするためです。これに関する詳細については、このリンクは、次のとおりです。

https://superuser.com/questions/330941/some-files-in-system32-not-accessible-outside-explorer-on-windows-7

関連する問題