C# Net中的内核对象句柄继承

C# Net中的内核对象句柄继承,c#,.net,pinvoke,fcl,C#,.net,Pinvoke,Fcl,使用Win32,我可以创建其句柄继承到子进程的内核对象(例如CreateEventwithSECURITY\u ATTRIBUTES.bInheritHandle=true)。虽然使用P/Invoke可以得到相同的结果,但我想知道为什么框架类库没有提供此功能,即使System.Diagnostics.Process.Start()使用bInheritHandles=true调用Win32的CreateProcess 这种技术是过时的、不安全的还是不太为人所知?NET framework的目标不是

使用Win32,我可以创建其句柄继承到子进程的内核对象(例如
CreateEvent
with
SECURITY\u ATTRIBUTES.bInheritHandle=true
)。虽然使用P/Invoke可以得到相同的结果,但我想知道为什么框架类库没有提供此功能,即使
System.Diagnostics.Process.Start()
使用
bInheritHandles=true
调用Win32的
CreateProcess


这种技术是过时的、不安全的还是不太为人所知?

NET framework的目标不是镜像完整的Win32 API表面。记住这一点。此外,P/Invoke存在并工作,所以您并不是不能做到这一点。只是你不能方便地做这件事。我想在.NET存在的15年里,它对大多数开发者来说并不是一个紧迫的问题。另一件需要记住的事情是,.NET的许多部分被设计成与底层操作系统无关,尽管多年来只有Windows是目标。它太破旧了,无法让.NET程序员正确使用它。雷蒙德·陈(Raymond Chen)即将让它真正正常工作。必须在Windows版本之间保持兼容是阻止将其添加到.NET的一个原因。