【问题标题】:Passing file streams to System.Diagnostics.Process.Start将文件流传递给 System.Diagnostics.Process.Start
【发布时间】:2012-02-06 17:43:17
【问题描述】:
我有一个文件作为我的 C# 程序中的嵌入式资源。我需要读取此资源,然后通过 System.Diagnostics.Process.Start() 命令将其传递给外部 exe。外部 exe 需要资源路径到其在操作系统中的位置。有没有办法将它作为流或类似的东西传递?还是我必须将其写入临时文件,然后将文件路径发送到外部 exe?
嵌入资源是证书文件,外部exe是signtool。因此,由于敏感的性质,我想尝试不将资源写入系统。
这可能吗?
【问题讨论】:
标签:
c#
file
stream
signtool
【解决方案1】:
不,这不可能立即实现。您调用的 EXE 必须以不同的方式编写,并且无论如何都没有像这样将句柄从一个进程传递到另一个进程的简单方法。
【解决方案2】:
您可以将证书以加密的个人信息交换 (PFX) 格式写入文件,然后在命令行上将文件路径和密码传递给 signtool。
【解决方案3】:
根据工具的不同,您可以将文件作为输入(仅限文本)传递,类似于 CMD 的“管道”(|)选项。这种方法仅适用于将标准输入作为数据源的工具(即大多数查找和替换工具,包括 Windows 内置的 findstr)。
否则 - 不。
请注意,如果您将证书作为应用程序(嵌入式资源)的一部分,则它已经存在于磁盘上。短时间单独保存让其他工具使用没有太大区别。如果你真的需要保护它们 - 在安全的地方有单独的机器来处理签名。