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