小编Kaa*_*aal的帖子

如何使用 C# 中的 STARTUPINFOEX 调用 CreateProcess() 并重新设置子级

我需要创建一个新进程,但它是另一个进程的“子进程”,而不是当前进程,例如重新创建新进程的父进程。

以下使我几乎到了.NET:如何使用 C#.NET 的STARTUPINFOEX 调用 CreateProcessAsUser() :如何 PInvoke UpdateProcThreadAttributehttp://winprogger.com/launching-a-non-child-process/

using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;

public class ProcessCreator
{
    [DllImport("kernel32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool CreateProcess(
        string lpApplicationName, string lpCommandLine, ref SECURITY_ATTRIBUTES lpProcessAttributes,
        ref SECURITY_ATTRIBUTES lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags,
        IntPtr lpEnvironment, string lpCurrentDirectory, [In] ref STARTUPINFOEX lpStartupInfo,
        out PROCESS_INFORMATION lpProcessInformation);

    [DllImport("kernel32.dll", SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool UpdateProcThreadAttribute(
        out IntPtr lpAttributeList, uint dwFlags, IntPtr Attribute, IntPtr lpValue,
        IntPtr …
Run Code Online (Sandbox Code Playgroud)

.net c# pinvoke createprocess reparenting

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

.net ×1

c# ×1

createprocess ×1

pinvoke ×1

reparenting ×1