如何在没有 P/Invoke 的情况下从 c# 创建挂起的进程?

Posted

技术标签:

【中文标题】如何在没有 P/Invoke 的情况下从 c# 创建挂起的进程?【英文标题】:How to create suspended process from c# without P/Invoke? 【发布时间】:2014-03-21 22:25:38 【问题描述】:

WinAPI CreateProcess 具有 CREATE_SUSPENDED 标志,因此可以在 JobObject 完成某些操作之前将其附加到 JobObject,然后为其主线程调用 ResumeThread。我发现寻找解决方案的唯一方法是 11 年前写的 this post!

【问题讨论】:

【参考方案1】:

这样做的唯一方法是使用CreateProcess。 .net Process 类不提供该功能。 p/invoke CreateProcess 或使用混合模式 C++/CLI 程序集来调用它。

【讨论】:

C++/CLI 是否与 WinAPI 有更多的互操作性?可能值得在 C++ 中创建一个“代理”程序集以便从 C# 中使用。 混合模式 C++/CLI 程序集可以包含 windows 头文件,并直接链接到非托管库。使用 C++/CLI 可以更轻松地使用 pinvoke 完成所有操作。

以上是关于如何在没有 P/Invoke 的情况下从 c# 创建挂起的进程?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 p/invoke 终止从 C# 调用的 C++ 函数

通过 P/Invoke 将 MFC CArray 编组为 C#

在没有管理员权限的情况下从 C# 使用 Git-bash

在没有任何第三方组件的情况下从 C# 连接到 MySQL?

如何在没有 Linq 的情况下从列表中获取一些对象?

如何在不提供 C# 管理员凭据的情况下从标准用户启动进程