我有一个特殊的问题,我有一些我无法修改的程序,但它提供了一些我想在办公室内使用的功能。所以我正在为Office编写一个插件来获取我的文档,在后台执行程序,将文档放在stdin上。该程序写入stdout,我把它带回我的程序发布进程。
除了程序要求输入我不想放在stdin上的密码外,一切正常。该工具有一种从任何其他输入流中读取密码的方法,但它需要从中读取的文件描述符的编号。
所以这是我的问题:我如何(在.net环境中)在文件描述符上打开一个流,我可以将该数字作为参数提供给该程序?理想情况下,我想写一些类似的东西:
process.start("start-program --password-fd " + x);
stream = new StreamWriter(x);
stream.write("secritpwd");
等等......(但随后进行了神奇的修正以便它能够正常工作;))
我希望有人可以帮助我。
由于
答案 0 :(得分:1)
文件描述符不是Windows的一部分 - 它们是C运行时库的一部分。您必须使用C或C ++编写DLL来执行文件I / O,然后从C#程序中调用它。从C DLL获取文件描述符号以传递给您的其他代码。
答案 1 :(得分:1)
我不确定这个应用程序对“文件描述符”的确切含义,但您可以传递可继承匿名管道的句柄。见AnonymousPipeServerStream。 (这假设您至少使用.NET 3.5。)
基本大纲将是这样的:
pipeServer.GetClientHandleAsString()
)作为命令行参数传递给C可执行文件。答案 2 :(得分:0)