Process.Start 方法是否调用底层 Windows API 函数 CreateProcess?
查看 Microsoft 文档显示 Process.Start可以在 C++ 或 C# 中使用,但 CreateProcess只能在 C++ 中使用。
我只是想确定一个函数是否利用另一个函数,以及这是否是 C# 与 C++ 中 API 调用的一般情况。
最佳答案
根据您传入的 StartInfo
中的设置,它可以调用 3 个可能的 native 函数。
- 如果
UseShellExecute = true
它将调用ShellExecuteEx
. - 如果
UseShellExecute = false
并且您设置了用户名,那么它将调用CreateProcessWithLogonW
. - 如果
UseShellExecute = false
并且您没有设置用户名,那么它将调用CreateProcess
。
您可以通过 reference source 自行跟踪代码.
如果您想直接调用 CreateProcess
(或任何 native 函数),您需要执行“Platform Invoke (P/Invoke)”。有一些网站可以帮助您找出 P/Invoke 签名 for common functions .这个过程要复杂得多,涉及更多,只使用 Process.Start
就更简单了。
关于c# - Process.Start 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27153816/