将文件流传递给System.Diagnostics.Process.Start

时间:2012-02-06 17:43:18

标签: c# file stream signtool

我有一个文件,我在C#程序中作为嵌入式资源。我需要读取此资源,然后通过System.Diagnostics.Process.Start()命令将其传递给外部exe。外部exe需要资源路径到OS中的位置。有没有办法将它作为流或类似的东西传递?或者我是否必须将其写入临时文件然后将文件路径发送到外部exe?

嵌入式资源是证书文件外部exe是signtool。所以由于敏感性,我想尝试而不是将资源写入系统。

这可能吗?

3 个答案:

答案 0 :(得分:1)

不,那不是马上可能的。您调用的EXE必须以不同的方式编写,并且无论如何都没有简单的方法将句柄从一个进程传递到另一个进程。

答案 1 :(得分:0)

根据工具的不同,您可以将文件作为输入传递(仅文本),类似于CMD的“管道”(|)选项。这种方法仅适用于将标准输入作为数据源的工具(即大多数查找和替换工具,包括Windows中内置的findstr)。

否则 - 不。

请注意,如果您将证书作为应用程序(嵌入式资源)的一部分,则它已存在于磁盘上。在短时间内单独保存以让其他工具使用它没有太大区别。如果你真的需要保护它们 - 在安全的地方安装单独的机器来处理签名。

答案 2 :(得分:0)

您可以将证书写入加密的个人信息交换(PFX)格式的文件,然后在命令行上将文件路径和密码传递给signtool。