windows job 使用SetInformationJobObject限制UI权限时发现异常

acoolntly 2020-03-27 05:53:21
	//创建一个作业内核对象
HANDLE hJob = CreateJobObject(NULL, NULL); //
//为作业添加一些基本限制

//基本限制结构体
JOBOBJECT_BASIC_LIMIT_INFORMATION jobli = { 0 };

//作业的优先级
jobli.PriorityClass = NORMAL_PRIORITY_CLASS; //

//作业的CPU时间限制
//jobli.PerJobUserTimeLimit.QuadPart = 10000000; //1秒,单位是100纳秒

//指明限制条件
jobli.LimitFlags = JOB_OBJECT_LIMIT_PRIORITY_CLASS | JOB_OBJECT_LIMIT_JOB_TIME;

//设定作业限制
SetInformationJobObject(hJob, JobObjectBasicLimitInformation, &jobli, sizeof(jobli));

////////////////////////////////////////////////////////////
//为作业添加一些基本UI限制

//基本UI限制结构体
JOBOBJECT_BASIC_UI_RESTRICTIONS jobuir;

//初始无限制
jobuir.UIRestrictionsClass = JOB_OBJECT_UILIMIT_NONE; //

//增加限制:作业(进程)不能注销操作系统
//jobuir.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_EXITWINDOWS;


//jobuir.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS;
//增加限制:作业(进程)不能访问 系统的用户对象(如其他窗口)
//jobuir.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_HANDLES;

//jobuir.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_READCLIPBOARD;//禁止进程读取剪切板内容
//设定作业限制
SetInformationJobObject(hJob, JobObjectBasicUIRestrictions, &jobuir, sizeof(jobuir));

////////////////////////////////////////////////////////////
//创建进程,并添加到作业中。进程初始化时必须是挂起状态,保证在添加到作业前不会执行任何代码

//创建进程
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
TCHAR sz[] = TEXT("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");
CreateProcess(NULL, sz, NULL, NULL,
FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi);
//唤醒进程(的主线程)
ResumeThread(pi.hThread);

//关闭句柄
CloseHandle(pi.hThread);


问题就出在SetInformationJobObject(hJob, JobObjectBasicUIRestrictions, &jobuir, sizeof(jobuir));
哪怕没有在JobObjectBasicUIRestrictions添加任何限制,只是将jobuir.UIRestrictionsClass 设置为JOB_OBJECT_UILIMIT_NONE;
这样启动的浏览器会出现异常,无法访问网址。而不设置UI权限的话,这样打开的浏览器可以正常使用。有没有知道既可以设置UI权限
又可以正常启动浏览器的方法?求解答
...全文
270 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
acoolntly 2020-04-07
  • 打赏
  • 举报
回复
没人回复吗。。。
acoolntly 2020-03-27
  • 打赏
  • 举报
回复
不用SetInformationJobObject(hJob, JobObjectBasicUIRestrictions, &jobuir, sizeof(jobuir))的话,启动的浏览器,可以正常使用

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧