从CreateProcessWithTokenW用C#获取流程对象

问题描述 投票:0回答:1

对于我的应用程序,我使用CreateProcessWithTokenW https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-createprocesswithtokenw创建一个进程这有助于我在桌面用户下运行进程,因为我的应用程序在“管理员用户”下运行

在我使用C#进程处理我的进程并获取输出之前...

使用CreateProcessWithTokenW创建流程后,如何获取该流程?他们是StartUPINFO中的一些IntPtr,我回来了,但是我没有找到如何使用它进行处理。

我的结构是

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
        private struct STARTUPINFO
        {
            public Int32 cb;
            public string lpReserved;
            public string lpDesktop;
            public string lpTitle;
            public Int32 dwX;
            public Int32 dwY;
            public Int32 dwXSize;
            public Int32 dwYSize;
            public Int32 dwXCountChars;
            public Int32 dwYCountChars;
            public Int32 dwFillAttribute;
            public Int32 dwFlags;
            public Int16 wShowWindow;
            public Int16 cbReserved2;
            public IntPtr lpReserved2;
            public IntPtr hStdInput;
            public IntPtr hStdOutput;
            public IntPtr hStdError;
        }

我有点理解我有一些Ptr可以输出输入等...但是我不知道如何使我的过程返回任何ideA?

c# windows process
1个回答
0
投票

我不是在看好地方。现在,您使用我的方法发回的PROCESS_INFORMATION在他们的内部是一个过程ID,我可以用这个简单的代码来获取

var res = ProcessHelper.RunAsDesktopUser(fileName, opt);
var process = Process.GetProcessById(res.dwProcessId);

我已经对其进行了测试,并且可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.