2014-11-26 2 views
1

Process.Start 메서드가 기본 Windows API 함수 CreateProcess를 호출합니까?Process.Start 기능

Microsoft 설명서를 보면 Process.Start은 C++이나 C#에서 사용할 수 있지만 CreateProcess은 C++에서만 사용할 수 있습니다.

저는 하나의 함수가 다른 함수를 사용하는지 확인하려고하고 있는데, C# vs C++의 API 호출에 대한 일반적인 경우입니다.

+1

'CreateProcess'는 PInvoke를 통해 C#에서 사용할 수 있지만,'Process.Start'가 내부적으로 그렇게하기 때문에 그렇게 할 필요가 없습니다. –

+0

다릅니다. 'CreateProcessWithLogonW' 또는'CreateProcess'를 호출합니다. 호출되는 함수는'Microsoft.Win32.NativeMethods '에서옵니다. 적어도 이것은 "Reflector"를 사용할 때 볼 수있는 것입니다. – Sjips

+1

http://referencesource.microsoft.com/#System/services/monitoring/system/diagnosticts/Process.cs,e9edeff01b1851af – SLaks

답변

1

그것이 StartInfo의 설정에 따라 부를 수있는 3 개 가능한 기본 기능은 전달.

  • ShellExecuteEx를 호출합니다 UseShellExecute = true 경우가 있습니다.
  • UseShellExecute = false이고 사용자 이름을 설정하면 CreateProcessWithLogonW이 호출됩니다.
  • UseShellExecute = false이고 사용자 이름을 설정하지 않은 경우 CreateProcess이 호출됩니다.

reference source을 통해 코드를 직접 따라갈 수 있습니다.

CreateProcess (또는 기본 기능)을 직접 호출하려면 "Platform Invoke (P/Invoke)"을 수행해야합니다. P/Invoke 서명 for common functions을 찾는 데 도움이되는 웹 사이트가 있습니다. 이 과정은 훨씬 복잡하고 복잡하며 Process.Start을 사용하는 것이 더 간단합니다.