C# 调用C++;C语言程序# 我有一个C++程序(test .exe),它取一个n(作为命令行参数传递),并生成N个矩形的坐标,写入文本文件。

C# 调用C++;C语言程序# 我有一个C++程序(test .exe),它取一个n(作为命令行参数传递),并生成N个矩形的坐标,写入文本文件。,c#,C#,我已经通过命令行和VisualStudio对此进行了测试,在这两种情况下,文件都是使用预期的输出编写的 在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写入的 关于从C#程序

我已经通过命令行和VisualStudio对此进行了测试,在这两种情况下,文件都是使用预期的输出编写的

在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写入的

关于从C#程序调用Test.exe时为什么不写入该文件,有什么建议吗

发现问题
该文件是在C程序执行的目录中写入的,不是从C++程序所在的地方来的。

< p>我想您忘记了<代码> p WaFiFeExtEx()/>代码>在
  • 确保将
    Test.exe
    StartInfo.WorkingDirectory
    )的工作目录设置为进程具有写访问权限的目录,并且
  • 如果
    Test.exe
    需要提升进程,请使用
    StartInfo.UseShellExecute=true
    StartInfo.Verb=“runas”
    启动提升的进程。要做到这一点,您的C#程序需要是一个提升的进程,您可以为此使用应用程序清单文件
  • 两点:

  • 确保将
    Test.exe
    StartInfo.WorkingDirectory
    )的工作目录设置为进程具有写访问权限的目录,并且
  • 如果
    Test.exe
    需要提升进程,请使用
    StartInfo.UseShellExecute=true
    StartInfo.Verb=“runas”
    启动提升的进程。要做到这一点,您的C#程序需要是一个提升的进程,您可以为此使用应用程序清单文件

  • StartInfo.WorkingDirectory也是一个很好的候选人。默认值很少是可写的。即使使用p.WaitForExit(),文件也不可写。WorkingDirectory也是一个很好的候选文件。默认值很少是可写的。即使使用p.WaitForExit(),文件也不会被写入