有什么办法来“密封”一个标记,以便subprocess不能inheritance它吗?

有什么办法来“密封”一个标记,以便subprocess不能inheritance它吗?,第1张

概述有什么办法来“密封”一个标记,以便subprocess不能inheritance它吗?

我试图find一种方法来允许一个单独的进程作为一个高级用户启动,但是禁止这个进程启动任何subprocess的令牌 – 在某种程度上,这种“密封”令牌。 这背后的原因是阻止用户启动cmd.exe并获得对系统的完全访问权限。

我查看了过程特权常量,我没有看到任何可用于实现此function的东西。

进程启动作为域pipe理员从用户启动进程与UAC在域networking中激活

如何通过Java代码在linux上运行超级用户命令?

使用CreateProcessAsUser函数创build未升级的进程

运行无障碍应用程序需要以下步骤

以pipe理窗口运行电子应用程序

我不认为你可以封闭令牌,但是你可以使用作业对象来控制子进程的创建:

static BOol SpawnProcessAndTerminateGrandchildren(PTSTR Cmdline) { HANDLE hJob = CreateJobObject(0,0); if (!hJob) return false; JOBOBJECT_BASIC_liMIT_informatION jobli; jobli.limitFlags = JOB_OBJECT_liMIT_ACTIVE_PROCESS; jobli.ActiveProcesslimit = 1; BOol retval = SetinformationJobObject(hJob,JobObjectBasiclimitinformation,&jobli,sizeof(jobli)); PROCESS_informatION pi; if (retval) { STARTUPINFO si; ZeroMemory(&si,sizeof(si)),si.cb = sizeof(si); retval = CreateProcess(0,Cmdline,false,CREATE_SUSPENDED|CREATE_BREAKAWAY_FROM_JOB|CREATE_NEW_CONSolE,&si,&pi); } if (retval) { if (AssignProcesstoJobObject(hJob,pi.hProcess)) // This can fail if we are already in a job { ResumeThread(pi.hThread); WaitForSingleObject(pi.hProcess,INFINITE); } else TerminateProcess(pi.hProcess,ERROR_OPERATION_ABORTED); CloseHandle(pi.hThread); CloseHandle(pi.hProcess); } CloseHandle(hJob); return retval; } int main(int argc,...) { TCHAR cmd[] = TEXT("cmd.exe /k regedit"); // cmd.exe is our child,regedit is the grandchild spawned by cmd.exe SpawnProcessAndTerminateGrandchildren(cmd); return 0; }

如果你想要更多的控制,你可以使用JobObjectAssociateCompletionPortinformation,所以你每次创建一个新的子进程都会得到JOB_OBJECT_MSG_NEW_PROCESS消息。

总结

以上是内存溢出为你收集整理的有什么办法来“密封”一个标记,以便subprocess不能inheritance它吗?全部内容,希望文章能够帮你解决有什么办法来“密封”一个标记,以便subprocess不能inheritance它吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1275980.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存