none
如何在内存模拟硬盘上的文件? RRS feed

  • 问题

  • 下面的代码打开了一个exe程序,其中C:\a.txt是打开这个t.exe程序时需要指向的参数文件:
    Process p = new Process();
         p.StartInfo.FileName = "t.exe";
         p.StartInfo.Arguments = "C:\a.txt";
         p.Start();
    
    
    a.txt文件是之前用代码生成内容,然后保存在硬盘上的。
    我的问题是:想把在硬盘上保存文件a.txt的过程省略掉,即a.txt文件的内容在内存中生成后,就直接将内存中的文件赋给p.StartInfo.Arguments。注意:直接将文件的内容,例如string类型的数据,赋给p.StartInfo.Arguments,是不行的;需要将a.txt的内容以文件的形式赋值才行。即对于t.exe来说,就好像是从硬盘上读取了文件一样。
    这么做可行吗?怎么写代码?谢谢指点!
    2011年9月21日 6:24

答案

  • 如果 t.exe 依赖一个本地磁盘文件,那么这个文件必须要存在的,无论是物理文件,还是 Symbol Link,总之,那个参数的路径系统能找得到。内存中可以模拟硬盘文件的结构,但无法给一个文件路径出来。所以,这个问题可能无法实现。想想其他的办法。比如如果 t.exe 是您自己写的,可以考虑采用其他办法传递 string 数据,如 WM_COPYDATA 或者注册表啊什么的。
    Mark Zhou
    • 已标记为答案 JSHZP 2011年9月22日 12:11
    2011年9月21日 6:49