我有一个C ++程序(Test.exe),它接收一个数字 N (作为命令行参数传递)并生成写入文本的 N 矩形的坐标文件。
我已经通过命令行和Visual Studio对此进行了测试,并且在两种情况下都使用预期的输出写入文件。
在C#程序中,我在文本框中输入 N ,单击一个按钮,我的事件代码如下:
Process p = new Process();
p.StartInfo.FileName = "Test.exe";
p.StartInfo.Arguments = num;
p.Start();
// read the file that Test.exe created
Test.exe不会写入文件。
有关为什么Test.exe从C#程序调用时不写文件的任何建议?
发现问题 该文件正在从C ++程序所在的NOT执行C#程序的目录中编写。
答案 0 :(得分:2)
我猜您在p.WaitForExit()
行之后忘了p.Start()
。
答案 1 :(得分:2)
两点:
Test.exe
(StartInfo.WorkingDirectory
)的工作目录设置为进程具有写访问权限的目录,并且Test.exe
需要流程提升,请使用StartInfo.UseShellExecute = true
和StartInfo.Verb = "runas"
启动提升流程。您的C#程序需要升级才能执行此操作,您可以使用应用程序清单文件。