Process.Start功能

时间:2014-11-26 16:10:30

标签: c# c++ .net winapi

Process.Start方法是否调用底层Windows API函数CreateProcess?

查看Microsoft文档,Process.Start可以在C ++或C#中使用,但CreateProcess只能在C ++中使用。

我只是想确定一个函数是否利用了另一个函数,以及这是否是C#与C ++中API调用的一般情况。

1 个答案:

答案 0 :(得分:1)

根据您传入的StartInfo中的设置,可以调用3种可能的本机函数。

  • 如果UseShellExecute = true,则会调用ShellExecuteEx
  • 如果UseShellExecute = false并且您设置了用户名,则会调用CreateProcessWithLogonW
  • 如果UseShellExecute = false并且您未设置用户名,则会调用CreateProcess

您可以通过reference source

自行关注代码

如果您想直接致电CreateProcess(或任何原生功能),则需要执行" Platform Invoke (P/Invoke)"。有些网站可以帮助您找出P / Invoke签名for common functions。这个过程要复杂得多,只需要使用Process.Start

就更简单了