ファイルストリームをSystem.Diagnostics.Process.Startに渡す

私は私のC#プログラムの埋め込みリソースとして持っているファイルを持っています。このリソースを読んでから、System.Diagnostics.Process.Start()コマンドを使って外部のexeに渡す必要があります。外部exeは、リソースパスをOS内のその場所に移動します。それをストリームなどのように渡す方法はありますか?または、私は一時的なファイルにそれを書く必要がありますし、外部のexeファイルのパスを送信するつもりですか?

埋め込みリソースは証明書ファイルです。外部exeはsigntoolです。だから、機密性のために私はシステムにリソースを書き込まないようにしたいと思います。

これは可能ですか?

1
リソースを埋め込むことは安全だと思うのは大きな間違いです。
追加された 著者 Hans Passant,
それはデータを送信するためにパイプを使用する可能性がありますか?
追加された 著者 Brad Semrad,

3 答え

いいえ、それはすぐにはできません。あなたが呼び出すEXEは、別の方法で書かれなければならないでしょう。とにかく、あるプロセスから別のプロセスにハンドルを渡すのは簡単ではありません。

1
追加された

ツールによっては、CMDの "pipe"( | )オプションと同様のファイルを入力(テキストのみ)として渡すことができます。このアプローチは、標準入力をデータのソースとして使用するツール(つまり、Windowsに組み込まれた findstr などのほとんどの検索および置換ツール)でのみ可能です。

そうでなければ - いいえ。

アプリケーションの一部として証明書がある場合(埋め込みリソース)、すでに証明書がディスクに存在していることに注意してください。それを別のツールに使用させるために、短い時間だけ別々に保存することに大きな違いはありません。あなたが本当にそれらを守る必要がある場合 - サインを扱う安全な場所に別のマシンを持ってください。

0
追加された

証明書を暗号化された個人情報交換(PFX)形式のファイルに書き込んだ後、ファイルパスとパスワードをコマンドラインのsigntoolに渡すことができます。

0
追加された