gpt4 book ai didi

c# - 仅当使用 Process.Start() 在 C# 中作为外部程序运行时,C 控制台程序才会在退出时崩溃(访问冲突)

转载 作者:太空宇宙 更新时间:2023-11-04 07:58:57 25 4
gpt4 key购买 nike

我有一个用 C 语言编写的控制台程序,它使用非托管库 (dll) 对 USB 设备执行操作。它读取并使用传递给主函数的参数。当独立编译和执行(在命令行中)时,该程序可以正常运行并退出。

然后我有第二个用 C# 编写的程序,它应该使用以下代码调用带有一些参数的第一个程序:

Process runProg = new Process(); 
runProg.StartInfo.FileName = @"C:\Path\to\my\program.exe";
runProg.StartInfo.Arguments = @"hello123 testing123@test.com";
runProg.Start();
runProg.WaitForExit();

它运行第一个执行它应该做的事情的程序(我检查了 USB 设备做了什么),但是当从程序返回时它崩溃并向我显示“该程序已停止工作”窗口。

调试器说:

"Unhandled exception at 0x77962EE5 (ntdll.dll) in program.exe: 0xC0000005: Access violation reading location 0x6E650254."

从 C# 程序运行第一个程序与从 Windows 命令行运行第一个程序会导致这种情况有什么不同?我忘记了某些部分吗?

还有其他方法可以运行第一个程序吗?也许是一种告诉 Windows 使用 cmd.exe 执行第一个程序的方法,而不是尝试它现在尝试执行的任何导致此崩溃的操作?一种使它在功能上与我手动执行第一个程序 exe 相同的方法,可以正常工作吗?

最佳答案

这是一种盲目尝试,但必须尝试将 UseShellExecute 更改为 false?

MSDN Process Docs

关于c# - 仅当使用 Process.Start() 在 C# 中作为外部程序运行时,C 控制台程序才会在退出时崩溃(访问冲突),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48079356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com