Передача файловых потоков в System.Diagnostics.Process.Start - PullRequest
1 голос
/ 06 февраля 2012

У меня есть файл, который встроен в мою программу на C #.Мне нужно прочитать этот ресурс, а затем передать его во внешний exe с помощью команды System.Diagnostics.Process.Start ().Внешний exe-файл хочет указать путь к ресурсу в ОС.Есть ли способ передать это как поток или что-то подобное?Или мне придется записать его во временный файл, а затем отправить путь к файлу во внешний exe-файл?

Встроенный ресурс - это файл сертификата, внешний файл - signtool.Так что из-за деликатного характера я хотел бы попытаться не записывать ресурс в систему.

Возможно ли это?

Ответы [ 3 ]

1 голос
/ 06 февраля 2012

Нет, это не сразу возможно. EXE-файл, который вы вызываете, должен был бы быть написан по-другому, и в любом случае нет простого способа передать дескриптор из одного процесса в другой.

0 голосов
/ 06 февраля 2012

Вы можете записать сертификат в файл в зашифрованном формате обмена личной информацией (PFX), а затем передать путь к файлу и пароль для signtool в командной строке.

0 голосов
/ 06 февраля 2012

В зависимости от инструмента вы можете передать файл в качестве ввода (только текст), аналогично опции CMD «pipe» (|).Такой подход возможен только для инструментов, которые используют стандартный ввод в качестве источника данных (т.е. большинство инструментов поиска и замены, включая findstr, встроенные в Windows).

В противном случае - нет.

Обратите внимание, что если у вас есть сертификат как часть вашего приложения (встроенный ресурс), он уже присутствует на диске.Нет большой разницы, чтобы сохранить его отдельно на короткое время, чтобы другой инструмент мог его использовать.Если вам действительно нужно их защитить - поместите отдельную машину в безопасное место для подписи.

...