c# - Process.Start 功能

标签 c# c++ .net winapi

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/

相关文章:

c# - Unity 2018.2 中有多个同名插件?

c# - 在 TextChanged 事件上等待几毫秒是否值得?

c# - visual studio 2010 sp1 源服务器支持

c++ - 了解 move 语义

c++ - 从字符串中删除逗号

.net - base.OnPropertyChanged ("Item[]") 在 ObservableCollection 中做什么?

c# - 如何向此 ASP.NET DropDownList 控件添加默认的 "Select"选项?

c++ - 计算 2 个 TDateTime 之间的时间

c# - 在调用 Icon.ToBitmap() 之后处理 Icon 是否安全?

c# - Paypal ACH转账?