问题描述
我用 NtcreateuserProcess 创建了进程。 但我想用隐藏窗口选项创建进程。
我在 RTL_USER_PROCESS_ParaMETERS 中发现 ShowWindowFlags 参数,当我将 SW_HIDE 传递给他们时,它不起作用。
以下代码是当前用于 NtcreateuserProcess 函数参数的代码。
RTL_CREATE_USER_PROCESS:
PRTL_USER_PROCESS_ParaMETERS Processparameters = NULL;
PRTL_USER_PROCESS_ParaMETERS OwnParameters = NtCurrentPeb()->Processparameters;
NTSTATUS status = RtlCreateProcessparametersEx(&Processparameters,&ImagePath,NULL,PtrCurrentDirectory,&CommandLine,&OwnParameters->DesktopInfo,RTL_USER_PROCESS_ParaMETERS_norMALIZED);
if (!NT_SUCCESS(status)) {
printf("%x\n",status);
return 1;
}
PS_CREATE_INFO:
PS_CREATE_INFO CreateInfo;
RtlZeroMemory(&CreateInfo,sizeof(CreateInfo));
CreateInfo.Size = sizeof(CreateInfo);
CreateInfo.State = PsCreateInitialState;
CreateInfo.InitState.u1.s1.WriteOutputOnExit = TRUE;
CreateInfo.InitState.u1.s1.DetectManifest = TRUE;
CreateInfo.InitState.u1.s1.ProhibitedImagecharacteristics = IMAGE_FILE_DLL;
CreateInfo.InitState.AdditionalFileAccess = FILE_READ_ATTRIBUTES | FILE_READ_DATA;
PS_ATTRIBUTE_LIST:
PPS_ATTRIBUTE_LIST AttributeList = reinterpret_cast<PPS_ATTRIBUTE_LIST>(
RtlAllocateHeap(RtlProcessHeap(),HEAP_ZERO_MEMORY,AttributesSize));
AttributeList->TotalLength = AttributesSize;
ULONG N = 0;
AttributeList->Attributes[N].Attribute = PS_ATTRIBUTE_IMAGE_NAME;
AttributeList->Attributes[N].Size = NtimagePath.Length;
AttributeList->Attributes[N].Value = reinterpret_cast<ULONG_PTR>(NtimagePath.Buffer);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)